%!PS-Adobe-2.0
%%Creator: dvips(k) 5.99 Copyright 2010 Radical Eye Software
%%Title: manual.dvi
%%CreationDate: Sat Apr 12 17:05:10 2014
%%Pages: 170
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: CMR12 CMR17 CMR10 CMTI10 CMBX12 CMTT10 CMSY10 CMBX10
%%+ CMR7 CMBXTI10 CMTT12 CMR6 CMR8 CMSY7 CMMI10 CMMI7
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips manual
%DVIPSParameters: dpi=600
%DVIPSSource:  TeX output 2014.04.12:1705
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end

%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end

%%EndProcSet
%%BeginProcSet: color.pro 0 0
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end

%%EndProcSet
%%BeginFont: CMMI7
%!PS-AdobeFont-1.0: CMMI7 003.002
%%Title: CMMI7
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI7.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI7 known{/CMMI7 findfont dup/UniqueID known{dup
/UniqueID get 5087382 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI7 def
/FontBBox {-1 -250 1171 750 }readonly def
/UniqueID 5087382 def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI7.) readonly def
/FullName (CMMI7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 105 /i put
dup 110 /n put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBBAAB71645535A2B
6F0F22458E1429F4A67307E01F0BCF6F337E0E2AD89658D880B04C26306F8179
C8121B958459B923AC3B05B594D8AB95F75870019130442FD29578D44F5690BC
7281357A5041C8A809A59D0DEE108E2A07D406656BC74A9F3317CB887E712318
46B2ECAA341F8692ACC2D14ABABDFBCAC6F35858355F1D3228B0223EC73AC56F
3C987464DB829F243E304F4C59CDE3EF6EB53A4EF9BA91510CB89A3407261F58
A2AE66880BA98FC1EF546112892494C85A2C39F9DCCAC5766725894A7AA148E9
42360AE64BF3A4F1F9F0A0D0C1AAFDC4D50C52233AA595B7D0CE557D4A010D86
6E6B76A7E9523E8A6633DA9348BC3F59302F72F492A30782AE7EF220516893D3
DE836CDE311DED9262AF01C506040541EE84AAC539B404B23033EF56D4BCE6BE
B05F79CD633FE75C6728114D2749E39FD7454050F67763AB636377BA8E1867C3
996C7D7D4A4A02BC49D1AD7FF174C1F49F1F205BC9D5AE42BCB02CF8554E8F5A
D1876C9285B6CCD7B8C165F75843B0AA11D8462B57077AFE75BAD086E9D9F91E
30ACFF91776132F3CACAD1CA5E08B17B36A0E45ACBAC52393B9AF9089BD821D9
CD5A9CD9BECA59F7445D63DECC1B4502D299DB85B6E2EE7C69A1DAB91E22A3A5
89B524FA20AF6005E7A586B90A2C6E5A93C9EFA4ABEF5F7E4C7B81363FE8D2B3
0AD637FA863DE787581ADD7CBE463F7866C40F4E280260ED0E9C8453E5C7E668
FFF058B9742DD3F131C264F8FA102CD0DA05F3114D13D34D422799181453FE23
2FC6EFB01BE420C930B879D671F3DFB036197874725220644A5A52DFB467BB75
8089E4F40CE9401777B9FE1D0AEE02E782A6EB2A185A454AE9394094CDFE7CFA
C03C23A78EAF242E4F811E4C83B59EF4DC5ACE4AD37B41616B46C263358710B2
6137314545CA6CE89119B42A3518EC85C68DC07D26839C68B1FF55C4A9CD518B
A1FB32F9C475BB6110839FCCB94156E7B3648F27245A00D2966FC4DDE3996BFA
F463A663CB6935B596B1582ED0ABBC648AAA8A86068BF0038001C753C8BAFA0D
2058041DFA720B528E2D4B16196DB1CF30C779D3F4800FE662D5B60B208341F2
A66EFCB8448C2FCD12DF0DD899911A8BD96C9B670054D328790E5D388518B146
8CE92E368EB1DB3CAAFCA4834CC9D9D9DCC80FB1F34F39DACDE643052C977A7E
A95C5FA8DFED9B4DCE769E4E46256D6DA8FB18FD7FA4E4CED5D486803538F3B4
6D3F5B3C03184F5C26C66DBB4C724918EBB6A89C4602E4EDDA81EEE2BD18B683
FDB459F2CE0A9CED23DC208EAA8BEDB304B00E093DEE926A7B32FDB2EC70DD85
94B9137856DDDABB402B2C76DBA87149051ADC6007018EBDD571BE1D092EBD95
76D4E063AD7D5F62E6C26EDB88D38678F2806A1F4900B0ABC4ED034A818119A4
E618F1A902315BC98F26775E59555A3DCEA1D0F8B20A9084920ECBE3F7F245AC
1182A40B518B194669D95DE968542BFF80FDC89669BC256C44CB66A2AB8CD7A9
E42C69956CCB6BDE8C09AD22EF3196939B3B84EB23A6E071A36D702909E019FF
058F27562441EB5CAE87A4407F67C4390810BE89BBE867D636468E73677B84C8
5A1228DD7DC8EADA221B1BAD5F43E832F20ADE7ADBFF170AB306F5B711816FD1
39B7882556E30F002977FB88D8B28826A75DE0D20354A2D41F2DA8578376F7DD
F27B0F59D4DDDF5790E11E3957491DC74EEB7625CA49FAD90FA47AD8E0BDE824
FF326A84846A47A21B70FA549BEE307F9C6970009F963B49A504F0115777826F
1D81203F655C242FFF15BA97E3BDDFBF435B10E74CE8543C98966223818839B3
6BF3BC63F882B0AD0FDACA8C56A570277952E1D83F18BEDF084D2AC004E2B09D
70DE1740D7D220E92B54D2FD0DDEAF1E08C41FD321A8D474982DD105B23166A7
AA9E0129DC88065B1E0F9382BEB4B4E1DAAE3EA5489BDCA921AD5A8175F2841F
9400478DFA99C5E5553F383882664D73FBDFA29BF32E52C28DCE80DAF4839434
022FA515679DBC13FE98968D2894DF5DD69C49BD23D00F5D858B69D1F220F968
F0700E13873579B3CFB658972098DC61F1DD580105BC27795DB4AF11A871CCD6
2E1B9AF7F0DAAD4CE315379A7B42CECB983DAC5A2B9426B4E5E0A7F7978504C1
DD7E30063AE3CBDFB24EA2BCCDC478AB82084FD30A4793F4707D9F8F9647B413
F8A5C5AC6D5EA0E35628CE1096A434FB8286F4617CB4D0AD30A4A0B255A5A356
25AA5A947FD3C4FA44B4AA80BAB44C48CC1E2C6D0A711365A37A58C3483D07ED
301A83D2650A2E8CBA9EE62FF5C2736EC82C1402959F64527F9B640619F112D9
8E0F4A8A3078C72ACF3F34AD855AA4008C96E30D9E8C414607C34E06E29AC5B9
2EE5DDB823E8C3EEE6A8DE228313D476A7F39B5DFBFBDEDDF7C45C1C88EE6D01
7FB4F7BB2CBBD5DF7F0CBD98DC287FA6940FBFE1B3B136613A3CF16634CA7B90
53D5FD5776515EFF5D37F8FCC62D8BEC8EE2216503D54D6F2032D3C2BF861E15
FD1B45B71576F15852EEA65DD372E911EF4CC18283CD2FF4196A3F1A9D81137F
F1820EC604D6C61AF318C6C5AB6DA1EDF305CADEF7CC0183B86D31310A09972C
A4BC37D110C77ECCA614D1A281EE1C2040B4A5ECB31A3FC61760F608E44332D1
D2C53C7891B505A3020E9E4915F3618588FCEC80B9ECC5E637D8D0F3C94B1F2A
C53FC46CAE0AFAA7E12266C212A73AAE60199752C042BD55A5DF1CD07FBDB830
C83E7832D8554AD9C9CAEEC7CED1DAEE622090897641CF2E5B34A353D83264D4
4687522DB290D3BA927BA315EA5D25B0D7B69350C6C180AB0C322B05E01F7C7D
F2F48651567F0C1B49AF3950E43C94D78F7B184BF2946B924BC4279AED28F3A0
17A7D8B235698A516D3FB5DF0B18A422B2410C385E7E9439C6D60917EB3299AD
E31471616251FA40C9FA098109BB31A54D9C03B2F12947E4E9252A0851B81C4D
F39E7FC44752504B589C3911571B1D3EC3BD1E1807F99CED1DB20270E483A805
CA2A016E7283550D1B1D35C226FAB63F983CED41A4D02A2F228FA9EF065027B3
CC69D6F2E278C0A2D238D3A37154B0D22281F62C61D9182A69657B027BBDED64
11E261E47620602F865221A534C5A32E2BF5B93A187911A146F2E96538B47DBB
7BFA7EF406FE940F4DAD17E6E4B80C4F031D71F65657C2F5C8233EEAC68DE8A7
E1FC3055C122C1795D0C71A0284F89A9BF04837F61C9E08DB42644A490C97D34
A5D3CEE475B8D578205005A0D68AF94AD27C0E855BB8EDB74775690A4EDD6543
BCC10CF13283D6FA8A7CF3FE6C4F96470A11FF0B0160D3F9816B13B0BAE0D8F9
B84C7631063FE658D13D108D6FE24A89799FABA72E6A6D1C943922CBE676C1B6
11A4106ECB4F1A7F8A84B2783C2E6A109C58D63FC0B74D8C8A1CB62D527441AE
E656D94B1AA8581B4F07B653ED6486AAE1F8ADB30FA8D8914AF24721C74B0908
D84F2EBB91144ED4BD7EF533F2584048DEE37E17CDE5FBC2992A6F924FEBAF07
B626F988599DECDAB43C931CFECF99FC6EBB72F8E542765C26295902DFF60B7C
7B9ADDB4858BC9D808B7F0909690CF8DFBC59A786D48B891937C31A219842A43
234425B4963062DB4C4E9F534C77F4243408805B5A6B8BBF428632CA4AC03A7A
E336DD181CE0CF3E742079E2919EAFABE16A63299771BF276EFA8D85C920F995
5B9D4E8F1ADFCC5C29AA89BF90C186C5DE7679906B2FD4DB279D245D27D08837
D3A8D541FE37415B706EC585C05804108C1D938E543B8B63E275EE85CE9DD843
0A8B9163144B77DA1A552A25D5E77E94F29CF252BE9950F4E627D5F72536B6F3
3278D4A45D10759F16AE42BAE8460865FEE84537F8EC9BF4813570E883B826FD
1ABF3F4E66DB6FEF8366E07BCF290EA67D39C9D81B2A7EA48E0A228FE3D5AA50
1A56CCBF229C9AF2537A8FA70EEF41096ACED34CC7BEECA4EA1F23B39FBC39D8
CCEA93E63F508CBE6722C11467A3D0D5C4C52031DE43C449333E4295104651CE
E13B821D7904653346067E971BE0042C571ABF40C3A1079A675FE4264B784D46
1B8FAA4CDE9851C4EBF69ADF51A7B68CC8706C08D13A44909D4C1D78DB0E0B2D
0E0318304B229DD2FDC968027CDFF65722059C62154304D6F9C3F06DE22914EE
928B7D1BF1FC7E74B4D882998D59BC086AA2D4EAD0AE39F6B75B5A3FB9994506
E21731E1A15F0F2D12F88724BA72898197A80FDAC00243A3038871EBD2F2BAB1
C616278BB78490CB86F552CBE5DD0862F3793D72C68AC16AF8E38FE1A523A5FA
9B0428745B1455671CFA1F6BFBCCF9CA23C833113C2948E7A6AEFFF1A83509FF
C559BB5EE7F92BB43F7F37A371E661C826F63DD0C1B25E34A8119E71EC82FB66
23C7B126FB6554E7560B1B69F2EDBB742F3B20D1648C151C37A8570CBD330A9E
7592A8607D2D727F3AAA0FF2057DF4E2A4C7D3B658C6CED38824A770420D89E7
F6AD385DBCE9C9A9095CF0042052A67AB804A6675BB9373A99390CBDFB715984
A069DE543E4C6ADD7F1EC7A15392EF834EAB4584679A43443953427DB13E6959
0F2F5061C99C6D00FA5327FDB5330AEDE19A53DE3AE092634DC6AEEAF63A5BED
990F8A117AEB1CA0E7F7DBE02CB3D86465F1613B976D1CF6F3A1E69740A2FDC8
062ACC45EDA6B863B60015F276860FB79C31D28F97A799568E66D0A8757B2C41
E939337B467303041D0F4C59390B2E41E5F298F275DCC699D27C459ED4D5ADBD
02539F00095D7E1872862142B46BE06513D3EB1A406E6BAA64BE795122100F09
C37E5D1834218EC1D11B031C7DFC9F5AB071A8F4DC08203821366959E9191D4B
289682D915AF28CE5858F83338DC51B6B0DD052A181D9133FBA50CF18F70EE65
C33726A0450EBA9D0E0C3662AF6C2121AB7911AA9880D6BB6811D6D7515888E7
199A0E632104059A88C9D85B19BB35EDF4AB95E1515BB2339572928BD5FE8CBD
2D4DAF55DCFE29FBC4C3D56336277BA0C9A889A129F9FA7052AD1420B8705163
1A808EC1284C888D78CEA2B4BAB71AD76289F5F4986008FA9BF328E8537E6C91
E11DBDD8447E1C9ACE18DB0EC3D5742C264C8EFA445C5D16C2930FB43669774F
A2CA52144D99EFA8FC427DB4128CD4C036A8C611B087335C780740FAA419D39B
5DD68EA89C95275F9254D947EB3683D0130255269B10C6CFF29EA0BE484C9949
96188FCB747618A8044E2E37DFFD2DB8ABB621B34DC024259340677095B6937A
78EDCF508AC91D4CEFD872AD73F50582DC8807143CEB9F109C84DC5DA30B64E2
E56DE973088A9D32583D6946DB4F3523902FB1781D993B89D5F56D79D5D98CC1
7FEE73FC3A7D1BCCE90179AE450829E228B4DEAD3B2B4C79A400CFF899AB26F9
048B0875EBC871AD23BA96F88CDA8B87FE5809A13889A6AC349ABB25E54ACAA9
C213C5DE2D01BCB9CC0D7BBD384D23AE12E289FF8FDF1F611F5E14D4B20B15A3
42D9B3B37A83A9CA39B5DB6C8316C51B70F211530A56CFE54D63E88169CF5233
D1A7B2388025B3EBD2BEE0716C3A2D589EBC7A42B3DA602AC4E2FD9C9052C922
711E44408DEEA1FE0C9FD50A39AD46D437F61F284A2EFD42EF158EDD71A1486D
4865D6B5E20E60F4F4FC3D646909FF1EE2D7573665E4CD8340A1B232CAC0202C
C35BA9BB3D2267C7E78518F6711633F888EBEF72DC750AC2CB362D528CFC8B2E
A1AE1C05456F50EED8CAA768DEF47FF85C4322F02D7F9D188C6F285C674EF589
251B0B913339FD701FDB281338D96704ED7ED908BC113B4275A24D058955890B
12CCDD5572D63688426B0E1E9A40D6AAECFA5555C1CF9DBEF8C04CE1E5A63F14
969D39B6DAE8A91F6AF4CD1E2DA89A4661DA34E272B6032C442C031F081F5DF5
858F4620885773D8A2B2F5EB6DDA74C1408DF279900450E4A3E80BA9A9B1295E
F24EDC3F6EFD81A741EF74B0202820516C4FB720687BDD915EB2396128C3B262
20E3075DA153D6FD36E1C05B855929DAA4DE694B6F15EF2145C63250B24B031A
4CF0AFDB225E91D99828B83BD90F1702D3906D45872587A3A116B138AD9627CE
E778A949C392202823C670FDBC56F1896FFFFBCF52C4B400F67BA36B5FCE44A5
F18EEB8ADFC088C99DFF8E0A593E81A5ACA2E3693005F723C7D3E0AE2BDD3805
8C6007A00542DEB2539709558A88B21003CE4B2C7817AF207ED576B25A41DEA0
FC55A459BEB00ADB01309B35920F04F84B7B64F95AA99EBCB843A06CED900D99
97BEFD7CCB9F4D85876F10160C8D63E2FDE82B7A8D945F37CC9933ABE0FD1D76
268296B1A5AB06B2E814691128771694224781171DC6266BCC290FCE1AB59416
85530368115BABD4F1DE45952918D1945D51EB713C283DAE8EDD559F437CD886
A4B1DA6120D685C284673A3EE489FC1AE4297A3623B339B7D886B6B4B8F9F4A3
7BF85E320A52FDC6323B51879B98A14C33C567BC069D9B44616514EE1BE36F90
EC5FA33E1B6B0A46945D876EF0085E74935DF2560A03321861A752E59742B9FC
5C501FBC64BFB1602459885B63873DC857ED37F8BE1A9C6E9517B9BF5A6161BD
DEB6DB0381FFB34A8A96AB4AD48BEC40D4C198ABC599C3758AFF638AA75BBDA4
8545D5F95FA426FB25587301A43E176F6CED7851E815AD907F2443E70740DD2D
4FBD5D978B9B37F59D6DCF0ADD0F90825DD23558FCB858513602C8BC82BFA383
7AA6DCEA4009961D06DF233C5381A7F9541259926446B2F03664BC5978A1B6CD
EA6EBC9FE6100A65959513EEE32E69D47B55BAF30A893D77142F943982019C01
715CE29923795EA01C58A798979939B507C5B29A32881877EF7EF0C5CB3DE591
6B9A6C3F3FFA847F396A396F078860B59850BA4CA3115CA2376AEE6B30C05DC1
6F9DB6781ED0F9D45D10E096C33B1B7CD12A9D57C6E49AD833C4B093DC82811F
16B3BD902BE764A1680831EC5A6C1CED84AE0DC0A65678EA5270BF20931E6409
7AA44EACB22CCA11098F8A51096BE83A1ABA56C9EED4195D5CCF24FDAD92E823
C439DAAFBFD652157D728F2754F28304710D3CB33763156D76A259D446647A11
493FAC70DD28063A4CDDA162F72542368E1AC2826C4BFF7109208F66371910C1
068F21779FC39DE03AECF1C9FB2F417930C22791961D801284DCC89B0833B6A8
D63F153ACBFB7B7D547924613BBCCAED37D90BAC5B0264ED31C7B9DA5A2BC620
9B20CA48424D0FF58905BCD6190BF4B5FC6ECCA1BCEF13426920197CAB41C4E6
E82E8EE7BCB23C6BA6F8B58001533B225ED721D6CE3D6E89116EC33CAA6E905A
649F8C6A1AA187A48E20DB864596481976216DB78F0F57543DFAE3CDC0A6FC77
2CAA49442527A5D94DC54BE93C875690CBE52EAA4EDD9F2A511361BC0F0807EE
96AD0D26B62D809E82EC14EDB158EF48A748A6FE0C3A7EE5D4479B35425F35AD
3EC7444F6FA75CEA5011AD571078293448A33C7647611CAEE87974B0A756DAC9
4E1BA78DEE477FA59AD50BF5C52E068A5E044A4A4994D5B24CC5045F768A3C51
D4F65E2A5AFD271A7666C6835E28C60751EE528C0742433165AFBE71562A3016
F59676D56B0B5F7E4984D664BC3ADDAF24B4205752EE21D4B57057A943018466
09C3FA5D2C5BCBFC22A643586BC9E7A965DC34C0A7D272B5B1617BAC2B0CB510
5DD5EC6F7ED1226D19189FF547776698FD48B7A6A038131F869A9E24006A4FCB
9FDD5E4A6DA9C531E1F1D1F0131CF8BF06B78BD2C6109E3D5251ACCAA6661142
7E0CF66D8C1998ED3DDDF69890FB2039F35BFBA2D9E6EA42F2E2E88E8C66D0C7
6B2A404F1C72AD3C0A327A90E16092E727CB2BAA0128995EB7C99569C8CD11C3
77C294DC2CDA70D0CB20DC0EA68FFB6BA42D64A1609E07F378A1AE072D1E66EA
6A88B6216A65BB5D731DF9B83A7A1136A9CE874779495E7C1D5CBB3A4F47906A
09156C93994992C526D0C9BD0129976B790F553FB2400B78F2857FDDA9C4AFF2
AF6A3334700FB3733F881FAF164591DCF506611CBDDA1E075026F2E98E581366
76C64A391601CA4FBA8CA906ECD13A23F4B7E7B39B39088D010DA238CCD5FBD1
DE4A90C188432793EEE6100D31754A7E35006BE1525B491190A9349D56CF1571
8CB1A7FADB595012FF87C7C9D63D48DA49C6FF1DA2DB4BE5C17C3390FC33FB05
F07F8B7B08FF9678CC85DDF38A6D9495D51E2520C7AE08020F045863C622EC63
3C33C8E48236814087336CC51FAC7321B6A37D566512BD51E12300D2728A18F0
096BCC51D11603ACC0D29FD5895A53AB4A066B7A19D30219E9AA6967C9241180
E46B79EEC3E1E7E062989033184A9B8E91D8C5DA215D57D9214515A9690B5092
7B29F06CA32B3CFE3DF92B9251E6D4B83665C3C83583D492A6D075F87AC225A5
F65A36BD9D484DF4998B33245768FE5EE30521152C835CBEAC0F2DE3647BD461
2759C497BAB79CB9EC4DAF4D15BEEAD7808DD45344FE3F2F45DBA16E1F9752EF
122C8D453476355CFDC0D3F2B8F27E67D57DFB0818FF35F6FAB5E7E598303E9F
EFA7B28088CDEE66B0189A5563B563117E351962B80C88D701FBC6A0D77AABE8
CF4F44D8B50FB002D473F4B53AE995CF11A778708895324EB921CE5F9BC10253
18D90B185D657B192548491A525D134472876D89B355E0840EE17E01E4CA33B5
452054127DEE8786EEA572D0AC12FC2B24889002EFD665FA82A0D0EA3BAF3B29
F824FC8C8EDFFFED4803E5D0AF7BEF8AAC625A184911BB28809661EB2631A078
FB9A244F043ADB379476D0DCDABB21BE4F1CEE1B21D775A53DC6A1BFC4A8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMTT12
%!PS-AdobeFont-1.0: CMTT12 003.002
%%Title: CMTT12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup
/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTT12 def
/FontBBox {-1 -234 524 695 }readonly def
/UniqueID 5000833 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def
/FullName (CMTT12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 35 /numbersign put
dup 69 /E put
dup 73 /I put
dup 82 /R put
dup 97 /a put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 114 /r put
dup 116 /t put
dup 117 /u put
dup 120 /x put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0
7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3
A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3
4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C
A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251
75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0
9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507
098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02
ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581
DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B
5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2
F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914
2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4
E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21
C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23
42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D
4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068
95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9
830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305F343
64F4010BA9811DBECAF88DA773C4DDC5ACE95A878698D7FAF9D1D517BE8EC36F
2DED788C589CB8815BB32224F5D92F0D318ABB617CD4D9DF61D15D82E557B553
4C3F423EEBD4DE3933DEBF90A88BEF2A4E1B6C22465827E8A0B3EAA0489C6D09
EA559B9E0DFCCA1A39673371E80226F39A010E11E6D49C77FC11C8EFB480D34F
2CFFB6187D4A3CA906A76B4E5B040BF8FF666F7C1167CD675098B616D5AD42BF
7E5D940928D79AE4C033417461CA5BCE2189DDE658F8A03756C12F1894143080
CF952EF0F75662D607E4CE63A38D377B1AE0FCDE217AF0F8CDEA8C13700BDA57
887CE8299F546BDA0B4527C3DB7374AE96FA655537D69FD68B5F46DE6FC650DC
92E8C236264BCF42C249E23DF31A09635541AEE0F2B0A1E632055B97802F1A6F
D9D92FAA8B2E28C859235681547EF4F5D8AE2C85EFCDEE4FC7238B6D3A663ED0
B5D3B2C27331D2E47484C6863D0748A8FE4E73CD65609EDA8B9B5B38E5481683
B152679431FB3A2A262AFC5381F7838AD8E456C7024A8D2D64C0B03C4122E092
0233CE4A7BB8519397E6CA06CDFA3E0DDC9F8267FEA10231AA61AF1772684932
3AAEF17509E1EC0387CD523AF0050435FF4E5FCF35ED96061F5C13891C34AF89
9180E9A333DE1EF1F07CE6B6038FD3B9C742B5C2707D3D34CA11370DDC03B830
E86230991C01161D02A14ACC4E97FBD4BEDF34F591FB8E6BABFC2F46E4FBFFA2
E460FA442CC58E0DEAFE64DBD6EF677BD3AA1CEFA476C22FAE9D64CE572B0AF1
20374CDCB847B671E65A61051CDA518E1D24BB7F3DC69B30EFA53B7BF7864FE4
09941F972463045488CB3772DF1DDB218C99027BACEA060FB3FF54DBDCD3F118
8BBBA6E025A62E775B3EEB0318D54C358A8E00A06DF01DEE9B5FD486515CC454
70AF99DE6D85338CFEC2FE4AFFBDE6E5F699B5D5EF1EC5320B838A723D8B7713
93C892A434077F6CEA688F30725D3FC2E41ACB0F920CF645D684FFBD3756868C
BC681E0E8800FF3A5A077A130D8C59F8E6BC0AE8CC516615E8785A8B95EFCBDC
180375387BBB287D286E95E2392915356D663D89B84030D9AF5757C720DF511D
419F49DF3CCB2EB827BAEC53BF3BB973DA85C2FD532D38FA95C3A13C15905B47
5F8B40E1ED08A491E675D442B4251518F5F104AEF4936A1145E006830DE17446
9ADF56650F258A0C3D9AC6F53D54BAF939E302EEA16B80B86960384DCAE7D03B
83340E3F72B803D98BC1EE29CA3B2EAF165227A852FA0CB9435372ACE94AE60F
EBEB4FA6C5C5F1EDE3A9A5EE6248E4315841333DD977A9B5BAEC15BC955EB766
FC21AFD38AFC81BEDF0251A2DCF4E5BC164654071975E80FDCA77576A2C462C9
A73191699AA7755574BC2A7138350E978E3162A4515D7CCAB88409A3D456D6DB
4249EDCF4C2B136EC9186A133B6C9AC1E946D8B707CCDD9C2522A565E93A7CB3
4DDE26D511214F8F1B8E9212477E24F4723681E117E40CB11688C51A30A5AF8D
CA823CDB56BC7EEB007108EA2B472F8317766D8883C4D12B7B1466385F9668BB
980154B5CF6F1CE74156732C7D2754CD84A34CECC389FF21B73F2D2375CCA069
74E024072FEE9CA9B9F9089EAEF7A87E6A03D9CF08DBF9ACAACA27D4BF6E0031
8A78D6B8031DD42DEB81B9A35C12628F409F1DE9D293A0CF2BDD94584A9351DC
689D69157454B8E1A332067FDED84CF6DDFCE710FF6A92E478ADEF8DA1715B0F
AE96B79D2EA39AFA7E5EEA3EBCEE94B8E631E8E64A128F422D61A59BBB4A3F1A
4DA051794DED4494DFCC126C09BD865096C3689C8235825E862980AB7BD0CC4F
3C0A2647529DD28018AD9B17759555C4FB016E179FB4106E0398156AE3FB3294
F86A2B19C11EE747A2379E822405BC72C5A83898EE16C3B34FD3563DFB8751D1
0A71A0D988E5629CBE81AA17EAC709A8355E75AF5D8B52F1CB973C0B3057E19A
12D74FDBF11D852984F2FAB83F0F54830ED130346348491CCB70419CA50E615C
4028CCE0FD74B42F577350BCF58A2B5AF3DCF93C839F08B369EF2867121732B7
23CFD25213A75B366A122A313217C4283A321F5719D2DD7D6B546387EF33FC90
B8267596733371256C285C582BE38B5FE16FEF958C6008593293D0FFC5230D27
9A94C4F1F7584609630B2A771EB5C109C6B9DA17B89BBDC2496067DF53929444
02FD619FEB61CC5C6638348E124DFBD75D10DA89A442CD9D042B0FCEE4E96206
D78D05B296158FFAD00E9C940D6BDE59608F0F42D7DC73C7A5E9FD567D888C8E
7B2EA8A76699DD4135E59B0B0C2F8213F28BFCBE8A218729A3829E50BFF1CD3D
C227C64B5E91A55127E0FF1273F6589F9C6E96FF12B1757AF730519780BC4015
7496E82263DCF0B25D05668BD112846EFFB004FF9A1E55242C62A9A120C39571
FD51927B29F06CA32B3CE0364A1A5B62EB28B9E45753ABADF89D131B4500D496
68405DF329AA633D22C1B2E047F44F01F358B674B2B52996785414A7ECAAE75F
969AF91F753E250A695EDC7F606FF69758CBB0EBF543B9032E96EA7B07DE8884
C6261A49C6B062DD2B3D3786EAC62BF8D411BB3244D77777A6C10BDAA5F6A1F4
0652FB99C4190B42974E7E5EFEC6A4D5FE10005E0E04A7D714127D9B97FB2414
E3411C4BF40503661927B2D2BB59B83EC6C3B748003779D6AD10F0F6F5D3D2A7
8D2DA067DC51243508905EF7644B74B4EA36B6B5749AC612634EDB68DF7FB8C2
73A7C867D53B210355CF88743E9B77C8CD00CA9AB738358F58505CE523BF2666
280F9034AA18015EF8E9F24C85D3D5B29EF1F334C13AC6E56C3CA64354D8C744
851D99E9E71796FADC9ABF61822EF7CCF053028DDCE84B7F3B95751CBE014788
914A7F4415DBDC08DD2088BADF76A1C130FA0CB25E1558F3788F92A8EA1000B5
55B76C42D4CB7EB0C7EDF3FB1FD33DD7AF48AB9C30DA1ECCA23A8985031E251F
72A54760A9B6C715EB1152C3B81575D1BC1FFA0F62486F3E2C180ABA4F226E15
8806CDF54BE562E90328560A7CA29AA4F6993001498541E3EA93771FAC587DDD
F7EED468BBEB3570B0FF1CD26772C21FC6BDACD1C97AA716A2627E8777A09F7F
B1DE5289C78AA9FB60F0709C81D621F37983599022742EA3ADDE2090
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMMI10
%!PS-AdobeFont-1.0: CMMI10 003.002
%%Title: CMMI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI10 def
/FontBBox {-32 -250 1048 750 }readonly def
/UniqueID 5087385 def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
/FullName (CMMI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 15 /epsilon1 put
dup 58 /period put
dup 59 /comma put
dup 60 /less put
dup 62 /greater put
dup 67 /C put
dup 78 /N put
dup 79 /O put
dup 99 /c put
dup 102 /f put
dup 105 /i put
dup 110 /n put
dup 114 /r put
dup 118 /v put
dup 120 /x put
dup 121 /y put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
523BFF5E279508A98568CD5CFD18FABBE9D17265A9042537872831BF5F1F340A
8D3E6DEA1D9675E87B3425FAA0172DBEFD7C28E30906B9FBA65517C9B58FB6BD
E0D474E69BB90B0D130A32C4130974A1C961CF064A5BE8EC1056858553FFCF7C
0D78627BDE04E5D0B9F6F72F92B61A915DFF7AFE7DC3807891D039AECEAC3F50
0A09579E661D3DC3022206061E0250B09A05CF198DF82D4F28FCD3671E815A6D
94820D0C87AB1DCEC251605D9490BC465D8A62C95B7352250D76D9FF1D3D5A32
9690780A5B56F9BA2083B29AAEA996FA95246D471693F2DF2608C28329316045
535EB92036397343A7C9211DDFFC557CFD5C64C6FEA484969F523FF8F497CA40
F7D9133C7CF1A483462FB124D12B54F7A9FD1F664DE0D8FB91272E792D90C250
8260C5238239BC431CB7150AFF4302A4EBACBE730F581903054F06874514DC74
E0BC264D1A85964FDD1ACA8DF5D4245179A87797C36CD894E9A9E4987AD6AAC8
6350CC585405668BF347F4F82766F2C355AC4D4F483647A02ADACD300641DB7E
F710B6815C60EBAC05C490A5DDB8897C0008337DE6B5FAFAB9DFF30AD0E1E9DA
CA45F94E7CB3FE695DE57EDF7BC10A8B75D1F3884FCDE2775BC1637451A1D569
4EBF4EB16C571701230455507D0E0D14329C577251EA1DF12BD42A13789152EB
BF5F559DCBCBB6F68E70AC0287DFD61F17CC141881E83BA42277D5F80B08E58E
9786206CD982CE8C90D8B595F5A4CE4A0367E162962CA49EDCDB70B7A74DC7D4
3D4260806CA21B76A4F0B08792DE257580CD22D78E4E51F73A258E8B5369C06C
718EB581669C2C483F3AC5ECF36D4849E885977819D8069133D3B57FAF34C724
0706C4E185851001E08883B163DBA4105397A6DD3A6FE22E584B1197B324C7EB
72F0FD455B45307BA2C8E310EB9FA7E55BFF7C521A2DD399A81378F4C8A36898
36F404A690AA7DB38AC7174C0409D4B79BADCCC7D1B418E4EA8E08904D19EC72
53EC9C043298BF44656B3EA3E326874462DA0436303AF07E065CB219C926D451
B6583264C94C0FF4111E14F5EC5EFE09F8FDBEE339E596F99BF2F3F7B73DBD1B
16403B0B29E07C64DA39B1347419111F7F807A7030F0C159BF0CDB43EE3481BB
A759D9E7EF71B5855A9D3F1DD2E1F8087ED7F99F34E696B24633F9B449528803
95BDCE0E83D6B1988D39B75F2DBDCF84003FC99B2D9FAABCD5919436DAE0FE43
CEE28042BF1DA3A32E9E70F8FF498B99E07F1256B59A607771182200347A34E9
FA6B2885205A55404158B6B8241DCCCF4714405D1276D9BA62418665F1A9B548
792EB4F58B94F44529DB808CF27BC7785DE5ADC3D34172433CC6525FE04B0F97
BB32ADAFA93899298B08128191323F4E141EF81BA4FD373F6E3632D83B4C8D12
A52DC69F332CD34930BF6762D9DDC95BAF900A257A8411C930C8CEB83D0D1812
A7125613C37FD53F549E99C7447A2ECFAAC487B1BFC1B6E0A89F0688E00EF3C3
46815354E8D6B414D4FDCD7EE31EAEA68611687F1A69DD8D244A40F0256A9E93
AE7D6A6E8E69D9A02FFC42BC8E7E912776BF098A84AE9A4909D73872BD87E46D
78B8A9CB17E442EABBF55A3AE04B6610A8DD1EF12DFE4E11D1E9610A4A48411C
3EAE7F4BB0DA1E903BA2A6BF84597F2A54724D8D21FDA88E2D8F1387163716DF
846D88FC29AB93B9F3BF17FFBE2EE87C7BD79B74D16F96DE7019B41CAD8E2FED
EA421BFE9BF261926428C3FF30BB0ED20C87F37DFCC55ABD637E9C348279AEF1
6A70E5739B94DFFABE4175555BDBA8F2814F84E026F4771D4F8F494FCD098716
37D1AF454F3BEF0FBEBE73490C291751E1F9BD39520DE30B1D3EB966C52FF506
70A4CCF6E57672327F5FC0A9940287FA3EF874A82351C83CC14EFB4C265D9332
BABAE4AFA4D15CBDD3F8345C30EBB031A00CD0F5DA35285EFEC94B3A96423A62
1BD53B8D85E38C489ECAA3FF7D87EB84556F43AEDE1350787C22C834528036B4
AD874E0495623ABFA0E06D6C9DE159E3C0C2E458E894B264855ACC22194DAACE
9EEEF2B225183710A560A68ABDA00B300C98E560321B00B9071A28D18A28666D
DC926AAC902728CF905FECE435043FE03050ACC431D7F0201CFC05B6725A9223
B0464C7550EE4C3B36EF0EF831E66E13A385CF42788C3B52725DA3B6AD94CB60
D7AC4BE98664B88264B612FF2D536423853D2BDCDD7D89B587346005E0177D0F
48BC093C087B558E14CA3430E9E92C306096695362B3A3FB99F9D225D4703F82
36D42865FB73D9B9EDB0AD41A1D03366D728755CB64665AC798B274B84BB526F
6832936915110AEEE39DA673B169F408228EB0F393FF6D85D9E78B00BE99B0BA
2A104E5D58F931AEBB91F0386D79E8193527590321C01DED076E7A3AE49D1B50
2566A5381835B2D2268C95FFBB07825BA0D658049AC8C35EC98E90E8D5681C1F
8093A4290B80364DD67D91C8FD89FABE174B17152BF918CEAA6911DB540D3EBE
62C7BDD835CF6F905622F245E3D055569873EAA546802CDC35C2FA3FB5351BA5
0EE0CDF5519C1ACBAA7E2C9D528063AD804921BBBD0F1E0FB180BCCF03827105
B77DF11D303554BA060DE840BFA6B94FD7F76B417312E1F836ED02D5BA0FF8CE
ECDFE23E27E7DDE79AB86F6C0401D241D883C6089A7F86B421CCF9578EC21DED
7D5AC63FAF160D4D497F5C433D4E18A02ABA9B60858511A4ACCE5E8CE1F5FDBA
100B725464B39408A317F973C705F22A25A6CCDF061AFCFB68A361BCCC16C51D
922EB4F69728B93E938453821D1CFA7B81B46AC2009E8A9DF466E22596B57C02
127C928A97F38E14623CB4B675F0B782B592B70B8E90CF688F505AA51831AEFC
C3A84FC96BCA4686634FB5FC2C628467F7D68506471C4784E91F681A5D2C067A
A0CE6B97FCC450C0FEBC781527A20684FFD3A9FC6E4AB601120790CFB4410A00
65F8F71DB75BB8BEC6476E012FA2370949AEBE6B7EAC3D1A2E9A867C950605D3
994F1411455F1761075D44297BBD3CBD188F380EF063CD1971D8AE23566CB4C0
F8B62C47EE277C5E9118F41AA592D19FA8E3A22FF1D26AE69F4CA2A38CF690E2
8094E8E0907536AF3646C95DDABD59E4D8D03E2F3783DC1A955FA2D4AAEB8754
78210D7DB5E993B85BFA531F64887D2426FF8583CB0EE23AFBAC68E46D92E5D3
0265A4F41067B68960F213A8192883C26E397AD753685AAC4D51EB334012B2C8
7C886D2AF4F146EF06FD384366D87B19B48ABBFF06FAA7FCFF6CBECE9482B8CD
C9315FC86703F3D4459715652711060F7C062CBBBBBE53205232648960FF5D41
84DD6FA201EE6C5FD5A6E95DCC7A5BDD9AF88BE83D92D56B8450EFD20A31288D
D1686D7B4F05DEC073DE009B976C829EC2EC7597992C2B339B68762B57878B66
BA4985069EAE029284F66243FBEB9BA916D331E837A5E2FF69FF66FAB31EF287
A001B44815E0B3C600CB43D62685B29E174EC77E7D4F2257C76517885F185CF8
28ACB0730F4652ED42CD5204A3CC51474B273706512FB3A9AB87A225A90E8517
C8AB91961DB8914B0B5E39010180BFC685605303C9A2E3C7B226C12445060DFD
2E84FDB106947752ED583FFE76D754BEB7654BA88FC3094DC2C4C1056891C392
959BC50F7173A3425E54F61C1FE45087720AA3ABE6C1E403258DF611091D1CFD
1F2494DA63DC9D01A89C61E72CB6F6EFBAA267E2CB570DA1AB58B07E3BD9BA83
73FF932741459497784B3611ABED216373E27D0C08AC541589BC1DFB79F19AEA
87AA9C38C9D3627612F21372A4D34F04AA43195ED9346617AC111419343B1878
ADD828089EF086AE9572FBDD7D3F394F0D56D82B40F5D3014359C64EF1D67773
8876ACDC0AA58E2DD7A9AC735C4F6D04DCEE5521977DD18233A2924ED8CA2A50
0B6E55FA0159D430943234A66D6A92775B56F5F9C7D1A34ED528F1D08FEB6E64
BE9292285EA1D270C4B021FFDBC852E9D8AB4791BF468E6B75676B475489D8E6
FD99895170A89636DBB47B5C1F213DD0B7312BED01E1675001F908BCA4FCDA3C
16D78F6C3DD28F4BA8D81B765E725B7E174201AC51A3A631A91B23EE787F0717
603EF5D43C82FA5A382C94C04764F31B907D37646F4FB920271EE8E71612084C
CCC55996C49B4F8289299D8EEE82CDE481F7AD53283FF895BDA5C85FA3CF751F
FC11404D2FA62FAA012D924F9424D0AEE02B11F41093A51A3AE384FF57B1C437
4C692A348066AAD56DBCA7C257730A6EDE64226FFF175ACB083ED0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMSY7
%!PS-AdobeFont-1.0: CMSY7 003.002
%%Title: CMSY7
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY7.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSY7 known{/CMSY7 findfont dup/UniqueID known{dup
/UniqueID get 5096648 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSY7 def
/FontBBox {-15 -951 1251 782 }readonly def
/UniqueID 5096648 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY7.) readonly def
/FullName (CMSY7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 3 /asteriskmath put
dup 48 /prime put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A4D9DAFF1B3EA76067
C5493B69F73B89C8B61804A34FCEC826343337CCDFFCE17BF343EA8034BF95AA
14C56862C2C052569AFB236E1F1795F05150C8F28DFEF6BF4BCBACB678D00036
30EE84FEB44B1A8438185EB45654E6853C1159B073E54292D135F0961A64E8A5
AAE49C4BA9C44156C123426212120F99F3E8B7425752A5FE384AAEF755A8464B
51F015F9E2967477D57B22627D75CEF8AAAF0AEBD504EB46D0289DFC8D86C972
F042BD88A90A53613DD93D8A7A8460E63D85F6C15C000C0AAEE4BD5130B6E668
8C9B3F3FFD804745DA1D5EC0AB85C96E1724FA67F9324C59275415182AB48D57
9722DCF602396AD4B5C075A5A89A5D005C9FE11273E5FBDDD1800F11BBDF6AEC
6711C5633A73AC5DF038BA521AC492E138F7FFC7C5438FFD32FEAA1128C66E83
0D3AA40665F05E62D7EF00B1B0596162C402A34B6BAE6300D43F3DFCC84860F5
C0F0F1CE28FC60642BBFE9BC9102E80146774CDC88F9C250DE762D24A3484BCD
1D26B6D9FE981CA5AAB2A4BEDC528115043DC18D7105735D7528C2C5DD89A812
75B5D7B2E5A586FBB0C061E708F92C1552F64A296490BD0F20243986A4707FF9
8AB3C917B8DB92F19DCA6B9D4A1DB57515E51DD85D5C9D2CAF7A036AA3F9E9B1
5B5E099CC05A9126AB274C17D75CB4FAF78052366D2F21EDAADF84B22A2D645A
3E65C4BC0F540B5D9609D88DD0E4CBEEF87C16447D43A5F98528FD45ADD10DE6
41AEC411FD6929308F0E4F48A8D9C9EE386E920D41C1CC98A52073011DF5BD28
5683F280B5CF7F27DC50930C81D344FF5A8A9258A207D2531AC21A735B14155B
C22C752DD22AA33C52D6D4D053B3E46FD4C9129068DFF52695A3A9184D04E8EC
93696A3FEC3AEB3814D9015EC14C22EC3ABD5070E8C28A3B42F5596D948212B4
AFB9978A0A361135C9E18CBDC98E0D1E8BDC17E25DDB3D52E86127E5AAECC55D
FEE61693190E378978EF1BBD4D1AF005D511C7607CCFA4BCBD3EC427CAD82809
B725B25AE8A03EE88F80A7732A571A2317E0B6A0D072EE8CE2EB9E033CDCC899
B64CF4FA1C708A885442062F08D3D8DAF44C066EE278714D1486EB709D327865
A483F62709E89D08291F044325208EBA758DD459481334F5D9AE3BB61B3020F2
A4538CFC2C94BE84C920BE80806FDCEE394230730E049333A7E16509207514FD
695B5E0AEA9E4A9737311AA0B33B15F6769FF865D1ACB63DC6201C3F1062A3FD
1B446C1857460745917A36289DD57C94FE6240F4A40FBDFC10E91B91B79029D9
9F1B9C74E8E5AA011A0ECBEC660230AD5929F01D0325D15FDC0040406F124021
02AE176F4C98BAC1706F03C2B5B40F325A50CA4683B2BB4605E68E72D0CBDC2D
96B3BBCDD01201B650A7E7744D58D1E36D81FBF72E0A875FF29B4C109A1950FC
9621B18D58806392EEE9841794DFD39E3C4E20D45384FE07F9D445F143B922D1
AB350AA6DFC51FCF767B141A392D6A8B633AACBCEC9F56A0CF40AB08020EE63E
08CC0BE01B40E86388A65F5869F2F4D022DD4B912031CB8CEDEDFC2473772569
5B28F66AB74CD7902A0061AA3547D13C7F0C6EEEA7B0BD316694A94E4D672520
EA044AB28D8D01076C486CE456EDA1811F7ACA75D27473080D27D3E681E35FC6
447046120C6CC4C17674F0F051570A79DCA74848F3F300B58B19018430D99858
CA5504084D6BB74CFDB635B6866974A9AF05DF201C69352B2663B0623E7828B9
5EC5FFA8D8F10A7C28000F8C679B180067D5481D6315BF1C4194EB171C8F3CE2
4CE319975B9E948D907F9F7EEAF07089844391555F329E331D52FF114668B8A4
80704B3C6AC0CCAA2F5D043CE44E65EDA89A0CA854CFDCB11D549B7FA72EDB90
D35353C34A771B1FAF96F83FCA5258AAB65384BAFFCE448690C1432A1F749C20
5817205185F973FA098BA856584753E75EBEBF387FC155202885F5B67117DD7E
70D1CD887183C5573B6FB607D4F6CC9F8B94B09B3F3AEC2EF1E6A320CF6D0112
63046321941D1FB3F2140B59370AA9387E24D579D389A166A10C989497FE9549
34E1AC2E546CC06C5308460DBEF3E1AEEB6CBB0FFDAC458E61DE3391480CF5CD
34A647D4DE15B81131B7D1F9EED4C6837A32E89B0EAAD6A05F5F67518655E5DB
224D4833CEC60D5DBBDB8A03FB1A9730589BB4F0FF56191D17E73B9562E0C356
B188882B36F9505F6F42EB2644FEE125C2A7D12227ABC8ADB924E88B0A9E8DC2
79762523B0B88DBBE6AC7968A46BD9E9F0C3F03F5F64724CA07782195F01F130
30DBE895C212E0EE20162D863F46A674D85232FA0DEE69A8DF019794AF6873AD
9CC2A5EEEF9393313CA519BF95C08ADF7A75B6F53EDCDC39851D20E58B97CA57
A7523717AA1821DEA94C8A9F8B82346B16D92D15AEDC16F0011A45A44B09DE47
08CBA46E8511D0C5CC83F952EEFA4ACFA7F3D7FA5E113EF6B70E5ABA6F1AD3B1
E4D3B15AC6D5C3BC70A3946F411A7D965D6FA9D7B6C6ECE19B2C29A2FF476251
EBF0CF3BF658A1D896323706172746F58B2DE49F8B7E431E20304A42694CCF73
11C4E9E96260CC442E2938A1E27EE6744C7CAB01634C8210CE40488B9CBD757C
4277B5E3E43C7560291D945F9128AF1F85924003418F96458ADDC5BB8EC431D5
AC9093D20DEA69B92454613BC1A82DAD4FBF8E56084494D9D2FFABD82A7C9847
171FE36B265B546F3072B0923840E6C6BB12CA53E05A99F0E8FD4F5109782746
7CAB9B35B68050230736AE624B7862D1244C7D9BE4D1CAAE21B123D1E8372377
F1FEF269A9A2EDF02CE0CC8BF92FD7EF09556987B8A3BF6D8C0A663DB6B9742B
E9AC61A449106AF1EA7ACAD40AC6F59427CC51865E6A90CF2AEED8D6037BA70E
4ADDAF622CDE877C98C3B2006B4721FC9BA18E30F0752BD4ACE36221F5CD1497
8FEDA5D643BE2EE007970A68E53D85975116E6CC09F0039A09EBAF0CA4B0EED6
A485CC0B69E526033FD1C1190BC5686739CE13D1AE8EBCABC01FCFF26141867C
44ED291196E546369129B9F759FDD7DC21BAF0A528FC34BA9FA8937813953644
C539F9DA4E55E83DB3D6DA309C562DA1330B157957B18F7618544AB738E25F16
F0517CD13C1F11BB8EA056BDC575D77CDC526EF497639DD89C2098660C5C45B2
D7CF715AC5E76847E0D3178360DAC1BAF6ACAEE72453B845B9F86621C166857B
029CEF5AFE29D1EDB4CA3AD7D008B7550A779E0066D7312DD6C7AFE1C0BFFF25
7B062B0DF30032EA2A2FE3CC46C96A3A0BA1888D1D2B05424A59ABE3EE928ED8
B67F507EFA78AE128F58B54634C7F534B3D0F4AFC23E38FB56EB39CFA425FD37
848545EAD03EDC5A9E796CEFB345F527615C785963F536972EBD9CFC4A6A4A07
5A31A508CA147FBB762ADD198CE36DF86730FCE2B643D1E7DF0BDE800DE7AF89
44A36B04193E44231E08919EE91A8B559646DC4DFAFF0AD891890A0A88FFA8EF
B066BCB7AFCA409C51889E7FEB33F19A3CB1268BD0EA74AF29C1401BABD16F87
ACF7DD65A8513DA9995C5092C36A774BC4260113360D29AF7ADF5D22B5B58E7E
A9BEFC33B9A91D2C397B27A81087376CB623318A8362C3FA9CBE3026675723C2
E711910DDB328E0EE3FCE219F44FE528B70E58B8E6CDB4AAB48237DD933D9639
E9D4F9EADAA8D46537D964D75C27F210B0C2473CB60D65F61BBD91ADE01576BF
77C49E31936138B0FBA066BE910DE1B1F0E4FFB5E81038E8656ABFF08DFD923E
6BA2AFEDCE6998BBF7045393C34811501586A4846E5B942C8E99D4C481D3AE60
2796ADBB5242D59F1116EBB828014BD903EF58B223DFD18BFBAAE4D348876B06
CAC10B7AF0DC270E6702A3F75D4DCEF872F2CDB9470AC9A1DC1ABCB55636D26F
9CB6BF27A0DAEB1F62AFEC12F55F78C9B59AC6DA9DB4B45444B0C582DB4DB8A4
B31EF4AFB77988E92FC0B257374B4408406490D9AFCC495316D6C08BEC9A76C7
12371E14417711EF802FB7151B3F6A2580C97527C9C3A0FAAB8D62FD992AA18F
EBEB36F7910186CD5F70A55DFE932757C299D9D2289796769A00A0C6ABD18F82
E0D4E95D6477E67B4C012DBBD098FE20E2F15C412DD2AD5471A65EACE05B3A1A
0C9C430BAEF4887F2CCE668116B87FFD9DAB4B9B3605CD26E6B12488058AFA30
8843791A95BB322DF5C47387F3EC72343855D6B23D72144EB5EB5157B8B238FD
6C71DDDA64C9539F66A7DD569FFF43DBE4A8F0608A3CBD354DD9BAB5E3C756DD
92C3C1B3E169D86A2230299432488BC04A87E08A80809F9968676DF9157B1C91
27C664ABCCBA9997FAD8966F766B325086899D1FE44581FE07C97688B3E15B0C
234A22646C32BB965B9BFD2CD34854D1488AAF021E169BF9CA9665CF040E25A8
16156C80A2F47397CD370AAEDA731E0D14FBEE1E51A17DB972D96DBCCE33F937
5CDBF1A650BF1D3536BA4CB7A1CACFD5CB457E2368A660A62AC26E64A631B2BA
6B08EBE42E02D9B1B2E95BF9F0A6B59C96A122968FD46A4D17BA3D018CCBA0F9
80BA3C1E6C683111AFF79303CF64F1D2CCBD7571C6E09DD9B27B8E101BE219F0
E075880A0E367885AC94143E777DAE455B990383100EADF786300602C2CE28F2
4F44662FDF03BD39A5181912D8F1243C36FF88882CFC4B34C1D4EBBC01D96A7D
9CE5303042D1B21042E4FEAA455F22A01333FCAD7E4AACA5D3A5386331985F6B
9B247EC6310BB07507321BEF3E4ECFC3B915AAA6E029B3999644C987640863B0
5DCF58CE479497AFAD1208FEFD1796E74467E9F7867C313A3412E6923F4C9144
C69EFA17965056DF043DB465BF2F1E191706D3AAB47E6AD5C9767E4A73B29F2D
E2E579D0262237568F82B360ADB6D0219B7535EFD02DD0688CDD23D84FC4F308
5D2D0010B1A9F4F0321A00C154672D21708B66B91ADCF98BAC7A2F94848E9A4E
86CC82EDD0399BD9F13E43359E71F80086B9B0C3B6D08831D4479ED83E7892C4
90C477BD1F06DFEBBF60F26516EECDEFE4787EEA8683754F2B257D0BAA607DBA
35EC6D1618C2FDF3881827F92D793ECF152D761F2423A96210F582DC9B90120F
26A33025414716A5E6F56D712E31BABE5047EC4855B767AC63D793995C9E074B
6E35C7E5255FBF4C3F17E7AD7B2A6C5F7459794FC94306B581536910F244BF5A
3158E821CE75F4B0565EBE985DF24DAA92F9C1D848EEC6B88E21FB6C51125872
1752F7352291960E5BD36F78AABBCF6DAA4D07AF56E4B6058AAB13D41BCDAA14
C0D63C6807FCD0E2B4B9CC892F224843173A75DC53A8F0FA396959C2E2CFE3F5
9B1C8B62797F34E7A0BFCF0787C73FEF98442234A617CF161829498035D30B29
ADFEAABD0B496E8A2E764D22DB7737F950FC5982F1C5F4FD414C1B0202F40FBA
62C81B8F0E836CD73D79366FD62388B437B81FC673442EE34BF27454F72A08F3
389E60CE28A050601A42FB4491C60DC02EC008E6B9DD2495522BBEC7293E2923
120584E88412DA7137397B41A28706B1CC6BB0C80709A2A4BA79822D245757A4
3EE454198942ED2316FAEB981F7615E642167620EBDDC5B271E273216EB119C6
4F2F0412F0BA6E3BA396217597575C6739194E1F839232FF088FDDFD3695A5CB
9A0E220389938596D8BDB183138E1F73F64512E4FAB5E1328F9B42364E3113B8
004BE2CA0B074EE271BBE0260D31CE555D535C16EBB528747EBAFFF253E659DA
3A377CBE0B296276AACF0294CF90FDAADB4EAD5E2F600E5B2A018DEFB86FF61C
84296480A425687CCE37D671472537E897AFD4B8C6A6175E1ADDF9AD24DFC5C3
A73E18AC2D9B28BDA2F17D51DB3521945850DAF0EE48B0FAC271544C1B4F3B2D
53BFC8DE32BA366FB1FEC0DD6C0B1FEA374CBE2B96F5B235A1D83A240DB442C7
1460980A3E5B96AE3D5784DE2C2DFFA671E0A856DB2FF4130E5905F3D5338856
C11A468D867D0C6EC585F1AD3E7164B8598BB59973B9A952FAE819F052A6554D
EDC342BCCB0525905D1D27ECB9EE43847B69AE116F494CB2DBBAFB2773F1A3E1
C75FBDF8D66FA5AB4005757D631A0D9424FCDA91A1D2AC6FCE7CC7A23E84C65B
3E92BC684F23467DCF8521E0E27CF1441C487EC6E3BCA0AB54BB137E83776009
833D772FD225E88A8BD992FD69819B3BA90BAAD1DDF16E4326190CC4BF9C30F2
AF7CA1FB38E6387D9745FC5E176B248B1581BF7A4CA2FCA8E423DF340EAE29AA
7E07A25FF838F67378F9A6A9A0B404E01E86E64FEF71DD3D540D4711AEB1974D
E2E0D485DAFFC74BA6B8E9AFDA245BC8997BB39BB6BD52B496A09C68F7A8E900
8DB3007643416040FCEC85B407EA0A946827771FBBEE49A3DA5542CC5173A31A
0280AB8E922C23C1BDD88D70627EF124633C318E7C9ACBC14AE216BFD41C0B6B
3A0161757913CA1F7B6626963C09936A52E73DD9B3D86DEEE73C0293A646FCF1
21D4C33DFF1671DA7A53E77E20233EDE51571549AACB7968602CD03EE67ACACA
B231661CA9DA2BEC5795A83DFAF675E9B052C8BDD51490F7874C91EF5ED2E0A6
BE9CBABB98A950F7E55DDA3823036437C11F614E27DA5BB8BC6D955FFE54B825
0201275C2C49A3908BEF1DB3D87792DDFFED23DE7FD9CFC284F6255C77E54A39
C2FDBCD28F2938E4CC135829AC1867CAA5705674062C9639FEEFBE49D6108091
7C58585B80464F7E69966D7933C7019BF336B88B9E0E7073A85EAF297B71B303
31EEE9121347A482D28CCE942AF53E94F88A97EF2F1860A92CE29A14495D67B7
D37E207D42F3891E0423F5BCFFCAAC057FEC683696ED6FEEFA65C8FB6F1312C5
24A1130192B4179F3B08DA1C951D988894E7FE7CFC28C56992A1CA82BF8BDBDA
E021F16E630FF67201BA4DF5F3F4D6AA65B8347FC1575C142C6C1868E8472BD2
CF191137AE1B36F32FD84DCAD50644AD55EBA2694C93BDF984A5C9E7C92B73A0
26769F00831537266FD2E711AB3F8AFC5F3FDA3C9E6439FFC48C3D1B5527FC56
1FEDE991E66E8465C0E395EAD0A22A2FDC001E449AB9C5E0EF187A1DE9B74696
BEB6A525DBF3A60DA2FBF1579150DEE1C5D1B6F55FF2708CE23289803CE123BD
C81E25DB96551A13AD713D5C7BFDD3F2E1D5C12463A195442B51909CC1724E50
A1F6F4EADB3B7355908F36F88521F333C4E7C70B094209D1F883B961DFAC32BC
8C5A2CAF77CA5E6AAB714CC0AF2B42FFF6F73301FC71AFFA9B33A2153F55C2DB
C1C111874DEC37CB746BEC9A3A9A37A2DD098CE7C66B0FE38460ACD77A47D53C
1550F857FFB733B5A8D02FB56790A09190B29CCB4F4A3058B1C82F0CC5E1B2EB
2F8E06F2DE531E1EB81326A8EF0F82843A4AC59D267EEE45730895752820BA93
A129C22A78C1AB28BCF67AD5DF372FECC9EE6719A02E499FD5CA866688E86089
7EE8E5912087E0C4588DE38428114785E0CFEDB1E2EE24CC067D107DFDF1E2BD
B1C4F9C6B740F3DEA0BD315581004E851ED5A9F66C4F9E95DE97D355DB06F482
A43B565F1255A85710B15A281E2F034B1C23FEE6CDF3A043780CB6AB18A016F1
9EAFE545CA5A5B5AAE2459D69D2151E99D029FB5C1649B9DA784BFDF7D177385
4D8B16B9922D149FFF6B4F99311D52BEC9A9FC098E7192180DBB38767DA9B9C6
E8CFC98615219EF3AD4A8157D14C72BA3F91C8B78381383E0BCA1A5319749E08
D67D1208C693A6640D1BD6B9285AC0D3110CBF8F7747AD12585141C3248D0BB5
BDE892F91A4B3291F21F30294693518E4629A3ADD7C8640E424FF615602C603E
1E14DCB3B17D34C090BEAD2A523E260A599522329B698729A635CFB15BE7E79E
6A34DAC7C3ED57340821A4E7A0C7F88F64BAA69BB80DFA8B659F4756878E3044
E1DAB053FE8A8CE996729D6B8C28E61CA326FE8914B35B08F0A09F72130CE848
C798AA77061ACE81D1581C321EF41BFCC720E819E8067EF90EC1E7694B5D8356
184088CB9775B0C5BE614739666A2594B061CC1C66B68DFAE725AD83C9E2C676
0F14E0DE777637308B88BBAC75D8991BB0B6CCBC78891C106245C34FC3D7928B
622EA40B6C2445862B9BEFA4B84931BFE039188EA6EC775A97B8E242D0869F3C
1A5B678EBAC7418142024DC801BBE868521A6131E49EA9B9E61E144B363008BF
F350679D24F1E237059BF1CB4E4942D6C9C2DFF1AF0F17EB5EA0F702D74AEF7C
4FBDF51DBA24F1F10D9BCC593CEB2DEFBCDA03F80F12E361B19F824915C08F44
0386F3A3B3A4C9233D590191C8A12158A698D80EA2FEF9AF8AB53EDD54679B42
875F8C1785A7977B3F904DF5A0AEC63E0DBC2387A9163C76E994ABFDF82EA670
3D0B97AC1232BDF9598365EC6C34168E66126C35A6EE2B94D9D42F424A613237
942558EB3219A2462D99EC730D21B24AFCA9CDCDB280EF3E11F3BB3EA927B822
0ACC201F85A1C9B0B01CE8D1E24DD5EFB2010538E769A8F474F239E70F510CD5
4E125ABD26F29B92CFF84A9AA7CE4DCEBA2D32D51D4167
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMBX12
%!PS-AdobeFont-1.0: CMBX12 003.002
%%Title: CMBX12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMBX12 def
/FontBBox {-53 -251 1139 750 }readonly def
/UniqueID 5000769 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
/FullName (CMBX12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 39 /quoteright put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 87 /W put
dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3
C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055
531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F
AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB
BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13BA
6CBB27085F3E9FAA6F6AB25CD0F9B879FC87D5F6BC8BC00A44123626DC9CB159
90C6D14B7BCBA095CC2BD04A7126DDD4AC823F4AC3E225DFDD7CA9031023CBEE
603CD1DC2AB701F16FFAC44FAD5A50EC402F70F4C2B403772176979C11032728
BF872DC77347FC43F28CB71E97BC0184963FA54A8E161D9B51EE1B89F32F409E
F01F82D09B739A8C31BCB73E5DA40B937286E7E68A2C3CD4C6CB185352361539
C164DB729E9EC9B6AA11AB7BF074D4B78B6A9B633D1A65D44960697FC3B53651
2BC4DDC707D98348061074C3748B3C8DC00DE7254DC9D6D1BB3457CA7C536BB5
F78A2AF27907FF4FB95130181253E9AC3236731A56149D270A2F07FD91C552AF
72FBC1724FE7435CACE77B5C9815478788DE5B5AE1FEEC0D860115E525FBCB4C
67D5BBB89C7C1DAF46635F4567343BC2BA3163471D533E86E123147710BB9C62
D40B4BE35D6A19297177944949F4C058F38D1990290E08093E31B28D09E5D5D4
01F825EEA7C64538CAD72821F9FB4CE3FDC33DC305E9A0789A77970599491ABA
AACD6A7C764EE90AF03DB98D8634A3F453807763D9DF52F032E4F13CECE10523
DE1BF18B6300E3C8AE3AE06575DC913E13611736EAAE40E03B5FDF80580BFFEE
E1E5572DEAED3267DBF3F2EC6C21FA3E2D45E54ED8D7C9E933950D391E047CB2
4BDF04F4F7F65D02D2C3AD982F6666881C34A55656EC8904480570A2248E2E1E
896BA64439D3A6C47890B420528A9BEEB5D36759F959A436583234D81360E54C
F2A57FC88379041CB686348950167DBDF710A145F970E1D34BD2C8492D9A9DED
5938F28DD9D571E2F6B4FE38F44AC0DB2CDF9CEFC0712AB8521B2729267702B8
F151211E635FD3D469B8644F3993BB879DFBD690DD512C1B04EB3228632A4D7F
16FEC6D529918823385E30A574015FF52B975095C0DF443BC3F470FC1FBAA2B3
442057BFB9746E1D7BAFCB8760780D5F1F19FCCD622E5C818D5F699B33BB3246
ABBE4A172CF91974D06774FCA0A88BE8B4427BE856AE3B4B09A2E7B1BE0BEAC3
8355A297CCDA637E4F62B1C9393C59E4AC37D77E7DEAAC1AE5F0C57E9A1B5F56
4445400DE3C089CF40A615F3E930400DB99FD05388D434A4A8DC5B977A8BAE42
DD760CF1BF95BA94FE7DE4E9A0A447AAD3D44AE1B1F2159BD1ED1BD7DDCB93F7
8E7B626DAE2DAC7DC02B543D433DD2B301F57E975F130E6F6532CB72066ED844
D5D47E5C5AED74F4B9FF487C1FB9920B705B0265F1DD6EAAA0506953A08CEC2F
DACE9A2FC3380F99895E023E498498DBCB41322D2964DFAF492FB7BA090B1A8E
FD04625C537592B1871DA13EF2D1B7B911E69E5A883A090C930727E0E014E64F
C0AA67CC7E1AE3DC6AB1CF131A963E18B6332A0F8517B68A63E00978CB976C03
C457E53FC73C4F2A1F3477D205EACA9A9EF0D7AD8A6C2096F54077E649FE5CF0
FC76574AE2C9F20D8761EEADAC32DFC25CD72B22A7F480597FD14D70BCACB5D3
71BD9FA0D6AE1BCAE50D841F74CE7AEB3497BF4DAAC276927D80017E2051EBFD
F23446CCA2CF592F8613B55296B747DEEB7ABFFB7FBBBAED8A49B82FF79A2C94
E22500C7963D4B84ACDCC5130E18D258350AA20F030DB6446A3408F2C65EBBC5
8B126E4F7305EFDD759C4A2BE2399347FF30B72FC742577127DDC1861D9E137C
01F1643789B4DA2261141BC9D823318EEBB35DBEEE48C5BEEFB6E6EACE926264
F0B991F41D1642E974F31433B793A4B1BDF93425C3C7A826A9337C3EAF5FEE2A
A9F789A0D901B47DAE319421DDC3973E3A45F84EB643E96D20F975896E38592F
D235870B06011E978E4EF233A593103A6EB8E9F6FDDAAE02E4FAF5C3C62B5332
ABF02CA254CD3C105828C7F80D5CE801F93ED1F7C50C393E72E6483C4E1DFB62
D6FD635DB662C6EA1FDBA180FC9D590B7A053F0E117A55065928DC9C18F6584B
7C55867100721FEA0E36C69371111907606392FB8C54171E3379E1A8DAF47220
B54A8C8AC8CAEB0610028715DE6F58D6DC5F72993948EF2A07C5A7AD1D96A163
63E8325A33F057A11314CDDA47533358090D3A2D4E093826082F9A8C08793699
715E4419AE8926C0BDD06D8F3834A4AECD463A19EDC974738BC1380960BA7DC8
8919F5207E62A43990DD38074911695C534351BE613BCEA48A479A879F4050CD
CE63BD4912B90236E334216985620C5278BD13292AD04BC6604742D60EDF324B
78E6B95475B69A342120A4F2A70B74D2D8306DA70CA37D6A9522FAE55599605F
78552FF930F933DD4B84B35619A1F5017EBB86E844EF517CF32687E48D9AB9AB
1C3CFAEDAD5C13C4C32F5B63A16C0E17683D4C336E6F63A67C3731B47C41B565
EC4505829EB88892CCD05C63540D1CCD61C4EB95D09E435C0DAA696D9EC5DF31
E95841E7AC39908B726B96C1318FBB044308DC3E6DEB6AF7F88BE627E28362F1
05E80D2EF200A5A80024B6DD2327D70A72AA4B05B19B0EB22C3741372589EB37
10C61C6F3920F827D973697596574CBC4F1DC2C536E46DE877CE1E152D1066D2
2F332BF407F8C5395D22DE980F07A3AFC4A23282979EAEF551BB4C9EA7598ADE
A6944ABF8E0AD519CCB6B1BBF8499B914A0166D1166B5C8A9D754AD44965E1D2
4930810FA5F9F78EAB02FCF25FDC54D651E7B5ABF3E979EB6D22EE4072B3B51D
74418CA1FC69F009E486461F48F545DE65468D4E8C19FABA736B0F92C0204E4A
AA0BED45499FE12832766128BA0159AF718529A91FA14F1FE0237FA94246C3C0
62C52C18240CB7DFB12273B3AA3F14A473E50E711B921D5AECEA36D6766D3768
6B9D868F620A56CDC581F77AA46D47D2F40E1117D38FA7AF1994C50DBF708238
2E252447C7A4688FC40C3CF4E419A2B7BDC424A2FFA67FA581A0510C3430F85E
5C12D15F9212CD3F6FB18516BAA5F77F1AA6A35C922FDD8EAA84F0C68E332692
0DBDA389519D86CA0DE50124A889F9C6A707D9E22502DD4A7C1DB71B6A9B7F77
7AA40FEEA3CC3D11A56DDEC24727FE24F9A6804649BB8F086CAC43AA6D2C55CC
BADE29D3740E4B26BEF598A404A885156604F4438751682CA9DA2A0483A89F95
C58E8B4DB8E9B50C7BB0C02C1B910228AAB3DD1AB9CF62CF248C04F88ACF19AE
2076A96320B2D4FA42EBADFA4A236031587A878E7D4CF207D504448275A2D60C
4936C65365DCA18489A2831B5FB22F1B00FDE58A7D824F2B9C42C31BE7923466
2D8940F0E2FE0C38C3C3ED3BDC7C86C975A49F946EED80AEA31BE2A8D861DFCB
50EA256C9B0CEB83194E96F155830BFFC2D0C29E8DB233FFA147BE60A7792931
4FD04BABC8B01E33705A3E0C561899A4B20C9B2BF44EA12EADDBCB79D6FCA020
B828C44F44A3CDF6749C37BEEA34C3AA72C9F8354863D1B67380A3A2E2D06698
35E7DEAC36C0C87A277AC1E97AC0637D7D3B586C2EAC39A6696E337699AEB3C1
9A44C5DA17D2C8D2DCA867C40961A999593524EB4126F0BBE81C8242A695EDD4
38F9CF000C3F35B8801E4B82ABF23626145ACC713F826A38527FFFB2FF1A5F2F
E4CBC2E609779C0806875382E17EFFF5C001C811CB6CE962EFEDA8545DA21F2C
19863349F91C97455557DFA54A4AE60EFFD8B4A5CC6BE8A62D14AE41E5867EC9
DF8C7E42803E8C82C5F0C884C73E8470DA2F89BDE27394CEAB577C4EF72BDEC8
0C87192B09B94371D60587267FF31335A7CC324651204B272F49E20C44297D4B
0370AE51C730B05A36106A2F110BB6248ED8E938B7C1474AF40DEF3E4C8825AE
2482C92206624E47A01A453A15CF02E382B5BAECC08FC59AD3BC794D2EC027EB
4E7D5086FEE943A6DF40372DDA3ED592FABCB433D01369140DBFBE5B9FB5A532
7549D9174E9E16250468AB88BE2F4DA307D5DD0CBFE5A0315DBB7DA34DEC3F9E
2029A67E4BF4EB87984723DF63DA78D195F59BABE595CCAC875C9C6103AABB76
FE19A252E0BB53FEBB00C05FBC13AB3FEB37E78106CAB399E2B7B55B1D1675B1
BE183CC261FAFB303A9F2C54F2CA360F97059EF781351B4C6778DF13F97442FC
0F26FAB9E568BA6D0EB1030189B700FF54879B418419B61BA448728C13353DB4
26489FB26E17F4EE34DE50B516EAFD33CC033468AE450893978CCDBFB59C0460
A5DC33971C789DB4A9CA011E108953028F0E32C6F18FD4F6B533408F3D733225
95A041B3036D84F1BBFD4C437C78E6738012B1BD936DDFDE5E4D26D5A8184677
E54DD099A945317A98BCBB5E3187D2CB4FC5AA04DE8321ACA18C77DD2F008E36
3A611776D37DEC5BBD7A198F9F5C7F5C3822A6906960C5EA742313F38493C78A
E76518D3A0584F42DB508B6C232CCE38289405D7D44559898A792230DD9E4A9B
55B87059E4DBEED4C10CB23986026254F11251FD5E45CFA778A1DA2A005EB85B
3EF2E1DD108BB60CEC2754B4D12E497879BE0A9612F6B877C9F1B5A2E301CF7E
5B367EE8B4C99CD1389BC5052D1A2766ECD2A53EC414F1C3F2B8DD4C7B23AB96
319BAE8E7C89A04BABAF88C1602C318A671C9AE5ADFA5821D3E8058942688F2D
177B303B4AE9B8A165C28DA4DD7FE23B21B15646DD2FDEA523624167C294692D
5D66CD3F20CC8AB0034F08F5264FC2AB89DF736DE99E165257049970E4E34B2B
2980FA52C8DC7068007E4A0A2EE33A87D62481292F8DB03BA1C6C414A16867AA
4E067EE860C27F60E5046C9D04284B3580900CA1A6108DD22E93E5DC1763ABB8
87E0ACAE4F3362220901D9D14EB1D69B96D07F2D61C436209CEF6809520C1184
9871BF3857E65F82EC6223EBD0A2649636DA655DE27D752B339471DAB3CA73C2
CC579CECA41A272F8776C7CE83E1A83845016AAB06CD2E2BB2B591060EE87C67
9420F472E5F4DFC5FF5DD1FFA10F7B124BD169694FE0A9519C202FACF0557D3B
E629C7391C32C2375C1C1631D8CCA9BDEF796E79AC9C33A3156F6E724D72557C
CDCC6171DFAD30026878E5B1194E01EE64690E44E14E0EC9E8592149805D9EFA
7338E8F51C72A71F44437F8CA8FDD14F5C85DF0CC2C422C63880CF4A8CEB61BF
13DF20168AB16A2EEE11AF455DA38E5D15290145C12A19148D105CF49247916F
EB7F0E35703B0A9CFEA3BEAFA32B707C26C14D421B704C756CF30522EDB0B806
E637DA3BBA7073657C29EBA3DDC27FC2D2DD1B6857808FABA1BA882536F1527F
AFB4599E9EAE28B6F940C6D61AB364586BE8FA8995EAD59B2F842C9C8711F9EF
242A993671130158D7285EC5CD29D515657F383D4E04931698974ABD630BE145
51CD530E8459228E88A3C4DCEEFA1F30CCABBA0D1725206EB799B4261F38E1B9
1ABEADC2C1DD87DBFC2610F2771EE60E9B5AC01009C507C133422F3D975A731A
A323A09859B4309F106B75F6B4523CBE70BB7D25A323801206878F62508A26D6
81E13DBE18D8F38D45E34E5D825C5C1CDC699D07F8B95831FE652B11124BB359
DA755F3AE43B0651AA57BE441195819B4DE2893D75E66543C3FD112ED5AA525B
33CF1F861363FFEF7097450A472CD64C0BFBA494C223E2DD57CACA56F89FBB15
E9FE02ECAE25F85BFFFEA9A078F0B4967BE4540C616E5E143A61B65EE61090B4
A0D3E20666596BE41967B8A0089052D0A3A7972B6164A05DD68D3569DA248598
63455E381EB4F6B48E14C85986578C9E4A6FBC03B25AB570BE2153F897E215C7
B53391649AF8F9C74E36A9E39B9239F5326008414FF1A75C277720E666E8C4F8
025704B5406A7BE81285457C64D1088FEF8400595BD649C905336CA6B4E88CDE
EE692640D2D18F29A6E8BE456D0F0C65B27DFA26F1791AC8B3AFF7358DF8C496
89490A959244F9CA55851356E340992EC54B7B03573DEEDDCD2CA98717B96554
229480684DD1362FB9329D97474636C174206F9CF81AC7F3DBA5C56B37B66355
C40937313B055B2E37270F79953F8A003F08EE6938D28FB920ED9F8B882FC85A
37F357403C7CA2E5FF9FDA0AE3AA578F5440E553CDEBBE8EE42287DD3496EFAB
FC5045F970F45A47473FB536EEA9B3C8B3C1B9A62F384CDD6B8632D5B7459C2D
5C2BE577DD9AF2625B4E6CA55C8CB100BF2B7B4C77A56042A527D74AA204D57C
0E5E9F9C1735A7D729AEF4FC8D2B5C46B3D3B9C7087FFC8C55728BC6DB55E9C4
CA2785617FE7AC437A2322B82B4E1DA48037A533609CD0FEDB99F237C480B634
75D19656D2AEF325E0A9674461520B4911F1B01CFCFD6DDADA8A6FAED1ADC416
11B17869833EDBC3DFE6D45DFFED9F218856ECB6965BA1CE622A4E6DE869DB76
EB559CD77B98E61157AA66FCDED8F6A8410F08FA972A786B89C010E4B6FB70AB
20FDBB754D6CC07CA834EDDD482FE3170F12EEBF5F137AEA4BC33273794F93A3
AD2BB81D517AD15C690A645B3DC548343473D01ACB3D3A71765DDBD128C3C6BA
586BBA3CE146054EDC5BE7F3C5C77C65859ED922DF6F9082020511A1150B9598
89491113234368FD5D1605602CB99D3F899D72C34A221843A944A001CA97D245
52372D1CA1B9F5A7F7383F779695C9A9696147254DE3DD934436288E8C03AFDA
45F0251F8B2D46B722C70CE4108315C1BE1179585D0AE02DFED7CF7C8092A284
8C7352762B4C959A261842068D65FB234D2D9F3FCFAF8D0B3D7317581D58100A
85CC41D7A1177E2E52C98A0EC5E2DC23F03A8EF32F14DFD80512B4AFF6FCBAD6
90D9AB516596F635AAAA40D0277E7E760A2B6F11EB2E42260B15E0A48BCDA54F
32D40EB9634203095FFB445B2E1A7E532BA1BD5623DD280F2A723F5DF8F45FD5
8371E07961FFE09D69FBC38AC0A719F12CCDB7538DE4B0589AF0D856EC41D6A2
EA4370B49240FBC34F79EB9AB2F59C87DC23148A83840400696BD5235303257F
F32FC3ED328F3925D37219541A74DD69BC6DAED885C2893A060F817E07C4FD55
BB0551D3D52B974BE3BABE00C33822D95132CD093113EF3122D10169B53459AE
F187CB60EAAA5BB66A407893B2CC7F38571EAD139DA09EF716A444FC5340A742
8028C6623B5EF8ED061157A777B88B6113DF5958067D82777F7899773CAC49ED
D98A201011AC65F36AB256345B608374C96C4AB4CAB58A065F5A427534F90CC0
0AC9E83C929B9C995055142CE25EEC6F6A8C5A502EA3F08457B68BB756DC5984
1B889B3E0132BAEFA7950890C609F501A1EB51E3E600F2C076F691086DDC5DD6
5AD2EF1595BAB361699B2F35DB457C9993C387AB4A8A06B5C9BDB6D31ED8AD30
8F80CD7B1157D5E5F667372C880B1EABE3C0B3248DFF0D9450CAF1069E2F2C83
4EEB33FFFCB4E39453A82F21FB94C2D83DB8161EC4CF4B52A6A9889DFD080BAA
4A2F1A170AD1C371689765E26A098DD334652E0E6969F9948FD3188572BF585E
B9754548D0F7A4FE414A9AA3DB16D7356FA03EB21A9E133487D17C378D54BBF7
158743D8C8BCA35BB6590FBFA0793C87123C417631A1993EEF14ECFC82AC2EFE
54B175A515458FE747CE10E716F0CD10E7C8C0C5D367570BCE83DFCDB7D92BBE
27CDEED68003873A9370253CB685577F8E176F943794E97282B83A1E0D1EC6A4
C80ED1AFFDB604787C540F6D1B0A079496AA7A4757CC1A167CCC9B94F0AAA032
9C68981E1440E4D30EF4A37144A102B9F8EEC1ADA1EA6C7473003C4BD53477FC
189B1BB62E7238FC152F2E408C863AD8CF7726CAAC4BAAA1EC38EF37BC066E57
547C4387685F56B5B0BD05246B4CC9BD2D1C2D88298145D4F5495C50662A6F63
91F1FED0B2E91C7B0F3C186EE069188AAAF7C20C8531691C44B4E30686D78427
C9C881E16957E6D2B6741BC1E492619598A7283172BAD94A1D69D3121868A8C4
217E5BC982471AFD9906AAABECDD399A2DB7F0E84D3807437FAAB119B881747F
B51E60D149E199D02AA9B4AF70D0DA2CEAA6BA859D68E3AC78849E136B541A82
E33545C21E6616E866A54071A593354EDF4F4361872DFAEE78534F3230CFF69F
464C2872D57D043CA9A92989730F90B0A410982F4EA911517E7DADE3799F5F51
BD5D4D8698D862A3DBA2B6EFA4BC925F5E98348E1885286A2787267FB4492A31
5C366719240E7BD87D0834576E33B7994A3E253C80F9853594DC044A9129C835
B79A7EC0BFA7D6016A3F90F0EBEB4E8A39434D22BCC0350BDC6034B9A18389DC
9A4F64E6B609ACACDD9989721009639211EA4F4C025834F75137E81DA94AA3B8
56EEF3F85E10A181B2EA6DF7102F685D4BD5090D9EEC1BAA5D558D97F0683182
56A7F5F734061DD3CF1DE06D9868A0AF531B216E93F358BD5A8700AB3F27A44A
E171A86548DA60A078623BEAA861E1BE6705ED26B185A4A6FC90A0D7033FB9F7
171D3303611001741BF224CA84324A5D7E9F52EEDE7C54DDDB434C4CB4082CFD
585BAD74B566B1876E96F5D437C94669916D46B9E3E7247B6351D78BDB6610B6
D81B981C46E86FE01EB19384D36603F6E9D39454FC934E77C69E62D893A9F6C0
0924F4C69EFC10EE60FD680642CE3365CA4DACAE632E1C09321845AFD97885A8
F748E506AD9EEBD2A808451D078587B52ACA092C446003EC572854BE769F1518
D54D130D1B294EE11B67FDAFAA4501874E6E22B145FED86AA8BB646F2D9B7853
1C0A6882D7A745B022D5327BFE8FF8D7B02204661BE7B3A9C8F99183DF50FD35
E706800E14F321CF0F14D6FA7C39DD8EA7BAA644E64FBBF552B49F6F2997A9AA
C75613B192D1FE40121C4D457FAEB4AAD749372CB2F5A71F7167451868E87568
A844EEA02482E25D29D529FB9FA2C3EC4557797E6462E3AD1DED42A11D8418D8
94CC99631EEB4BFBE77CCE57EA1AEF14FB7B38BDE6E7639E87DE6666E1EF8E61
AEEF6D93012DA6DD5812471AE1B13A1B899FC38750D56A9F7DC5A789719B6AAC
67DCDDE0EF462DF37AD445E0E559E7BE5C46B19A3167B4AC374B13952CA2F438
DE930EABC41ECD23BA25BB4B3EF9AD8204C676394CA1F3C658F1FF22D70B140D
761A3B5116054B1CF8F8AE20E72390B809FAE421D50091F87EF84A091E14DCD7
E6F2BC6B8C8EA11D723AB3073E1EE9CC77D08646CEC611757047DE98CE44B5A1
A70CD33DFCBD3571AB762CEF136B2BEE4B7C20D5F3A4ED6938EBBCE9DA7956E3
C5F6974FD1EEF7D4AA1013D2F3C4317BA808138A393B95478A506D503686D2C9
099988E79628AFB27B6DBBE6E0F132099ACAC7807851666B7E1CB1FE302B1772
E2CFEBB10F0C6BFC6E2001A8D9256801745BED69250DE17217291296512F9A3F
1486318C147266009ADD65C00A13AD40B4630E6E405B8A00D1F6CF07FC8D2154
07C0357B6134AC64E72B3B6D4E9F401A5EBF47D06877A30022204EF0CB252AD7
FB6B7B1EF50FEC4F2C2237177D44CBD3F873A7376F5BD9DD9B8EA051A5C33939
3016687411312AEB1AFFF70DB64CB98338EC9FED63D1A528A5981835F4AA6F01
5D5323836741070C32E23BF26A779B066FD8ECDE800AE838B88CDA6F29C5FA22
0565EAD93DE5BEC52DDA2B86C7B55BBECD11692FD246531B67399BFE7AC6DA53
3D21A005D211850BF75C926CA958D6B15974E25D877F721950E8F423AC4515B3
99EC87084349A2FE89E99C69D9C38C7727237513AFDB258B56124C0C42CCFD2E
BB2053C7748361FC2B5A6A1D8E410D3C6797AD80BEE2DF594635BC1AECC70F4D
7AFA8FCC537689CB4DF32D70411C275CAE91CCCD9B186473CBA5916F86CC22C7
E7C0A55BFAB3D1D4F73D6CFBF39A31EFBE1BA77DA4E121D0D4A6061EEA2F84A2
2985E046AF20DC911CDB1C8C7D49BB62A4795CD08263954F6B130109F6C8F98C
9CE96F24D05EC06EF135C9AF867ED14C172712E31A457AE1A3CC54474A1BCC91
F5BE8767C93E535D26A209E6113CC2693ED1840F6C263633AC14F2D821CB0B34
093AEE19876601FB88FFE15D2AD3D04B52D6EFB3586B8B11F7EA5497C3AE6039
4516444EAB6966129A0BB99432FFD7E812F47BE0490F13997EFC4C3800B69ED4
162494C3925F8FB91E0932A454408D1569352DF87693A1711FA6B018041BBEC8
AE413E75122B0BB24F472D9DED10DAA474A87EE01BE2F5A1A5ABA141B316D99D
9F683101E518A44B6444F7D9DEF0BEEF435624804AF90469F930B97814C8ACEC
1D4143CDFF5A963E74FD3E7C82A4793BDED123D38C2FE0C363CB9DB951C6EAA1
B20401EA1F3D58E57AA32D112032BEE3DD7C7A232A7DB87D1C6950EA56514103
6CE2FAE155F08F4FB6F5977D1D2471B5DE31F660EAE4E6D640380CF232A51939
2013B9753FB128C576810563F42E8DD238810FD48D8B383DDC96475EAD0A4A74
C7BF2D979F481FC1225857675A4C56A13F6E66222B189CEE0732323D11E957F0
7B0127BC437C3EA21CF1C739AE427DA7C4FB32C384C2E0D37F16EBD774F5F77F
9A875B70111289AC36EA9451E738758D8F33414507F82FC1409564BB1ECD1249
F912179B893910BC7F1E1F2FA811D8A25C944C23B8E08AC331BA5766D2327309
3532378925E0C38DBD143A1718592FCF91C9B16F9B7B2A9087951715EFB96AE9
7082418D39CA8F9A5608EF35D77B8366C1F00EDBF0A3B274E336B50C9B3ABAE8
1E46396B29230232603E9F12545657EB988C23AB1214CB80E089A7094A659925
DF7E52E69E4370442D6C11472B5056E310573108BD49F414A5EA8F0841066C54
D45445B2B94807E1C8EF7BD4187FA464573CB9F61E169F136F0802E7AF59FA7E
E0F9CF6995CB39E6769CD5ABD2F489707D2167A4D034E1ADEFD0647B4CB9996D
352A87714C35D9B1CE01D081BBD493A54EDF350DE38EC8BFD55227C280B0379F
5B524B371A6EEA92C5613767F0BD85F9147E1E00BAB65BE292FDB3D859C941C2
481BD8CF3CBAADD93DE69871B0734D226EE6C1957E59933AAE53931F1C4AC3A6
530E2F453552F702F06BEDA1DF8F12B2BE4C08E5E050EE1CF6C1AA12A165E0F3
DE31582DC72475469799911203A4F9373A61E74258FA64FF65FC32A01D221FDF
0CD2F97A248639B45283CD384B14B8991128E872EEF4C6C4DBF55E08F4BB25FA
B65A1C313589B8A4B06FBD16E7FADE61DB5F290F74D9800DE1122337E93D43A9
03AA7E5D2E0E4464CBA84F27107DC88A2A6CABBA5619C13922B86E2659279BEA
39EF7DCB959813F0E5901D551F2B6BAE3FC55A30CE73489DE4752BE91DBDA99F
5BDBC8D7E0B554BFA5A828A534F47866389819B2FFD7DF4A7D8760E4B342CECA
A5994E06CF58B9CC94A7F2C0ABE9323E5D0839903CE039983EAD41BD0F1C0053
C0F3A882C02636E40CE106566E64D537BEDB93B6B15B5EF676C9715EECBE0216
01F5C881780FF7947EE4F2C2B6D50168A5E3CB9B5755CB99B345F2EA0A6A71F2
D8269EB0DDB36BE9ADF4D01641E2347EE2B0E77E958BC6D02D7BC96DC3DFC54F
8D786A26E4762E629B85626F5C490122CD4CBC94FBC504279617FFC6F178B789
247F535F27B5815B72AC3C3AA83A967D216A815BF6C70A636055993A13522188
7720505BC11F5E0DAE97C63F4B86A1433E6C8D403D127DF5C417909BEC7BCCC3
898CEE28FB12305C8035F6B193BA84D233D4A333C01172A2729C63C4D882B19A
65D34FF5794C35211D50E895B526A77393D0EE715E0D8E9C9409685978EA91B5
E85455E986912DF195DB952CF09BD53A35615624E4A8C465A308085F89BCF8AD
A9529925E4D527AB9490A44021BEE6D74D11AB2D2D8E442DE51614A521D1B77A
7F9A891E816D49B3722370C5FE8D517CD843F777F587269480214DF51A840CB0
1C6279F0AB7BFA65BB9C7DEB8602373C01BECF257C9BAB2DF9C0017635C5B5F4
E171A42B0CE8A679F5ACFE8513C3E485DA0DC40FC2F6F502400C6D750DEC81D5
D887FF8608A424DAD8071513A7CB81F85EF9D7BBCA0A4A4091826D755F2371D5
9D0DA8527417D799A3019275CF19E913377F76A0D930F0824752642FB60B5B02
6F6146FE1CF156D1011CA172912F3625EAFEB1674782F464E3DA8D6AE6F6272A
0D7FD830EB69842275FCA0DDC31263132914A744D9D7602BD2786054CA9DC4A8
EDF18E25082181D9A3961A55FB642F85C30DBC81D9719365861A93417D231AC4
66E8D2D4CCA3BC87844743A466C3290C594DD2D796226038FF9155FA8DC33810
7D787F95493B0E3305B4DEEB539C950DFCE75A1E969F39190D40AC7729EFD925
67B804B3FF532B4A0F436D451E963018407ED5CF5159A3747309D26C4F364A3C
BA2F46ADF1D66F4C294F3D5D7BEF0392B9A979C3C35944C33C7E53A00FED5D7F
342E3949D214DDFD642CD4614121F9FBD4E501E85A0A6A472C97497BC158A6EB
C55E3B37CBA84BDF4771ABB2128B0E18183E1639355799184DF867607C03403C
81E43716AF152C8DEC351B9C74AAF12C07B711A8E1C62A6FB3B220C8CE46C84F
622FB37EFA0148A2F5940B48325658AAB0E98F80E7DFF802D5A5E3169BC06470
E177315E5AFB5E7898B150CCFE235F351621A42A8607E89C6DDF890A375C9425
D57BAE6AD371DAB86A615754B4DECEE29E8E4825D991222CF082BA1AF8FA6C2B
6B95AE09D2AFEA9930A96144AD5F71B9E97D47656C80D8EC64FCFC088F51ADD7
AF62C2A030EBA3BD95CAAA78FE8779A8A5C0C007684357564DF76AFEDEA005B8
01E392FDA38824F33E0542DD56BFF29B006AEE99306176E8E3131710451275CF
66647316B49B737DD59FA6148DF31FF48EC092D76E3BDF7CF94D9E2653746DB7
65DC2CB9B06D3122A737FD484641DD3CDA928A9A7D0799C8A0E67B1B3F4A2E1F
7AF1023554924AF98EEF575606D71A2DE54CE5AE7DE7A9A2D97F01256DF425FE
94BBA906F17A5A84F1818E4A5737D4B5B0D28F434CB6523F42A0D11115A8E2D2
CE0CD5221440A5FB9423AC6DAA03DE3C905CE5032730DCBE605527B09E926592
F438C55D4D7E1698C38D298281C06059AB39637F4B4EE4B192DDDCC0E5B7B076
D698B682D88E12BC4E2D4FF3B4F23B56E799169792D2245971A98A821DD934D3
E173043B6732D22954D5CA04E5DBC61B83BEC4C8F1D9770FCA6109E88E071801
05B9359E27FF8F2276B59508D5A75327420C9989451E50480A8379CA897851C3
E0CAE1F0423A3AE33DF5C28AD51B8CF9A217A2AD2F9DAF776C9F9219C2CB7DCD
EB9C5715B9A0DC1A27F98305CE2ACFC82F025D1FAA90622F29E81F2B0A1EB90F
C8E2C1FF4F9E51156BBF15ED321C76FC6BAEF7E16E521244284E46FE81332577
368F8455F474256E91F38043EA53BB1A4D840EDF7297F87BE4F7F930D69D4A7E
6733F06038F7C106D379DC21A8D9151DAD7AD64F02DB35C3AE34CE3A85C27DBB
4D221F76AA19E4AF162CECAB897F2C4A7BB1B74D3FCDF3C0C89EA7749F0052A3
D0CC210BC0EB20394460756F81DB45D474CAD894CD4FAFAD5FAE8EF5923243A1
EB06538BC579F08F8774FCBCB4D2D98BD95F344819BD29B657D61E91949D0D31
78633A16FA951D2C499D21CE89F6944FE94E112696146CD30F5D2155D4F7A475
FF5041BF54C6A9C41076D98BF7471CFD6C09EF405C82154537117E2F8D34B7E2
909BF30205B753A5954DFF2EA2386CE769BCB4995B4444535A2B633E65D51ACE
8F7596D4D9D40B5FC3D7C4E93D92FC936A575A6FA9E3D4B0988244AD7DC69A68
29538B1574717442D4F87A2DCDCB53DA1BA056E8186A19704333416C2190B36C
3092D9698ECEFF149CF6696D42387F2BA026C6EB8609577212C8B4206D250C1F
817EC419E217313EAEE0957563317E606B36A25F7019A795B5E40791DE855CF7
5D4616957B0F90FC63D03A0D59F86750E0EE6A4E3452BE222190549547533705
46B5BA1AB933D4BCCA2E8FE486ABDDC0052BF132D99630426E3B9469E53D6AA8
30925D77E93CBBC8F15B544D8951B068B24C7D4FD2C4E6057B5F95D2B425C91E
7F541A7D3F0448CE58762C807FB61D884D576232EC4B144F91A1FD22D85B3304
025DD8F54DF0EEB9D0FEC771C1EAA5F52278EA5E162555B66BC19573799C9BB9
A274148E80D14C2B49BB50DA15733849F55CC7597B2BDCD22323F2F653B791B2
5EB754E8657C85362FA58A87185BCDAA6A9FB248DA7FE6A95190B912D90F6ED4
D445346F44F0938BE3EABAA48B6BC9F3B4E2D0CD5582D1796D51DAC07AD7C7EE
C9E44CE76F017BB29D0594410EBD77CD58F07244B07CAD530A8181C171816540
4D9AFE5F60CC7B511213FC6055BB6AE6A11E9780C73AF19F1755F697D809548F
D64C6997E387D82D1B6030E099FFF3D0CE5DE55A50805A83EF9F625CFA2C542A
7A14C60546CE4973215F49C9BF60EDCDFC08AE85BD57A71CB4CF22CFB41D8D1A
84EC04FD390AAE37474D074A5D381BC771BEC6AD59DFAD970C849F5345CEBE21
32370422BE2C89151F465E5FBC8448C6B264730D958B8407AD3A9F99373EABFA
838A015009AE8C9A438CC2AD5E18CF2ADD206591CBEF554D2B09E5965A48BB54
5594ED9A8CFE51D358290C9E8200B32D7368EC9521639B3B1D9BAB37F31E3D2C
79D3339185416F1D76F4E573A66B2B0DA402E1C3FB413E65E703BE641F4EDDCB
028ED7DF60330B0CD433E6E6BD38750F0BBB2926A7511668B414529F63944850
16FFDD9B7B4C8C9ABDCEB09E3D2AD32DBBF75167CB270CE57BB23363E0D6E106
BC8BF24B375E95B01F63E4DB10677E62053B5BB7A093E8C6F02F2544B7F736D8
4E2A12F2F802DC7175A95622BA5F294187BBFF8FF96AD79BC2CDC4EACCA0FB3C
20E8ED48E1035E0D4AC54FAEEF0E305649132F286646F8D39AB3615680810D39
A8B0DDC4FCBA149567B92A48F98B7EC1EB7262967CE017315496ACA3AE83241F
9027942B8DC51BDF1029A3AD71A256226A7AA6BC7DB602C71C5210A22E9F2308
050F0FC9C59B89345CDF50C281EEDE0E5346B72CE4CA84C458915C17C7ADE1C6
CBA76194A7F5E0DA232A7D183E91C6D48060BB1C2978CCA2BCAD8261A0A399F6
352D5276EF2F6C6F3EA6B8CE3A4870069C27DF4D73DC8DE3763E97F276886829
30C62EC1F83DDB25D48E5FE17976583583E49DDA0D2C77727060D189D26C5711
6BA108DA7FA90F89FF9C5AB0DA9142AD67DCB848252B578E92F0AB20ECAFBC4B
E7BCBF537A07E17C11D53F6B376001CDD11CDFF1D9327BA5CF6D2B97AC3E1918
D27E04D43434A949BCF4CBEF77096E2B2ECB417A3026E4C4954E03FAAE7C0195
6C9A59132E1F181D1BF8E91972839E2C28D263F44404AADD9F6C02B4AE1E1184
BAB4D94935A8D183537A970A15617412DA40767C323F50C175DD2064E7291AC5
5625470E63278017D5DF5C7C30DFBADB5B053738253744696DA1400B154520DB
E3AFF7A52E0E9971BBF79C8D3347B63EF2DE9B79AD7AB964486F84B2C1D3CB5E
608A2733C3DD192A5F4AAE620337727F7EC971E753F2DDD1351F8F9674B4D0C0
3171DC14CF11AFB524C9665654D6024B9E5FF60053232622ED213755263A071E
04E806E27700EB465017E83AD8980FA75AC30CE5598583EF9769C96A5D4E460E
B366716B711863360C5EBC15E07793E8C3FDE485A5B879C7815B646A39628EA8
9E849D2160B29801D01D355A5FD18D3D27B5C3D536B87307C25B821882136449
7F3CFF16FC6B057F95CEE63DD6D2433EE822286D043DAFA6AAC2224EDD19D6CA
C9699C76D627B686B5765820A6405A18407A3647B87FDD2077E0FA5119CAB973
333F515584F3CFCB158D4BFF887405E0E4C2D6DC1A7FA79E75143022AC945ADB
C48566779E03C9927358FB3772999456470D2D845289A18F647AF244ED5648D1
9ED095934C521083ADE4BF6E8DD2C63842F6F75B2BEBEBDE8D48AB4EE58F65C5
36C9D2CDB7191BD6151A989B3DE3614B558E0CB69FC5B15ADA99189CF5A34CA2
3FDB1F25073DD10A36C8C96E720CED32629ECFE76201B40407019A2817EF57A3
86EB6DC798FF7A2EDD237831183D868E5C8798FFF51E97CA042E0521B954A64B
3A7FCDE7207FBC00B839E3DE532E61DF46A9FC21E34EB7946DB7F5F4872ECCE9
2F712EFC314E8405D352320B5AC1707AE91067B07C9E01D34C3E4C3E01F18C84
E3A41C74E411E0EED88EAA173ED9000B2986C49854C71933F73062CDFF70BB05
3F282A558DA81A4243F373DFC56C853E7BB5992B238910BF7A46D23B3CD0240D
5A5DDF1074BF7CC9FD024A3F1A3A9D151148
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR8
%!PS-AdobeFont-1.0: CMR8 003.002
%%Title: CMR8
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR8.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR8 known{/CMR8 findfont dup/UniqueID known{dup
/UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR8 def
/FontBBox {-36 -250 1070 750 }readonly def
/UniqueID 5000791 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR8.) readonly def
/FullName (CMR8) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 47 /slash put
dup 58 /colon put
dup 66 /B put
dup 71 /G put
dup 78 /N put
dup 85 /U put
dup 97 /a put
dup 98 /b put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 108 /l put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 119 /w put
dup 121 /y put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B
8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF
27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF
18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB
7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A
DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242
6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8
B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517
2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374
3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850
9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45
7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D
25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502
CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD
A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2
DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE
EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB
16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413
07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E
B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B
B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C
F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752
762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978
D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826
CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C
74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541
1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9
E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44
3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE
37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89
7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762
C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36
A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D
7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447
CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD
3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC
FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61
59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89
6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069
79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070
F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B
49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38
2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B
29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F
2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87
5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237
EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5
5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E
293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF
F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806
568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405
64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C
DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109
A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075
267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D
136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0
A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7
80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7
D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB
46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A
E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9
66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8
2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71
CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF
2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0
DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C
DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B
C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5
CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B
0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F
CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E
F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47
CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479
7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF
6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893
6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C
72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256
13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE
6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7
1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197
86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72
D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B
70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10
0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20
FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180
52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5
7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B
F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA
09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7
401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335
74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127
3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6
ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0
93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197
301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847
F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61
1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E
36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291
34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C
CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011
ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B
9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634
E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A
893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8
E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE
0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2
B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB
A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5
B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F
3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7
AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5
98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF
4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B
F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1
AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E
015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A
167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F
9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522
CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831
130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202
2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D
A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154
C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0
ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A
CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3
3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612
E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20
3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7
3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D
947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972
26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479
0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697
984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E
FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247
44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49
603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B
6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C
D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE
276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF
809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22
08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7
3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF
76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5
A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602
3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41
966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18
CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531
2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF
94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641
DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35
9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1
FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E
1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77
24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C
06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC
6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530
F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6
26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6
D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2
49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17
064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A
E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A
D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692
8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445
2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359
52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1
17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF
145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F
2AED1652A132D66117071CADB8603969B3A2F97270CF2AA8EC2AB890662FDBD5
00EDD53F16FD0CE199660202373E2EA28D29245A4AFD3A63695F6178406A7234
AB0C0FB1B19CB408E047BF014BBEAF4C9C19445C7819748F082C19E6E355EFDA
BF1C2DC348AC0AE6777F679E2F62A0A3EB19B7F08114AE0E56A3D310D6958AA2
348E1D304BA8C4389E525553A8791632EAE32B6E8D2193932B44D230FA17EDC5
7D407CB83D2501B0D2C9E86FD23E21F26DBAE2550DD4ACA051EA0A0030107676
3643176BAFB7DF0A157151F7625E63296E325E2C3E74BDEA10C3DA37A73F9972
4821E1E756D3DE2C1FB121371432AEADF3328894170304038253421DEDED8B45
D4B0DBF3B4F29F053C44053E14ED09E3E7A0FF377954754A34A9A04FE68A437B
8306B8463247F1E670BA928FF7D401437FAA45A7875DE9FBE63BEFFEC722039B
0EFA4F3DBBA7D50C464E3F297A0F2C1AC23880383DD1EAE1BED5DC11128649DF
AB8C8D394E7EEEEA3CD2038DC582527BE93A66AF5795E3F8FB790158EAE26FF0
3905C00431377233DEA8DBB68F708D35BBF5A20C098A4D3DDA725C3AA27301A5
BC9333AD666132BAC8A6A251241FD3677E1333463502EE90EE31D607894A595C
D0D555AE3828D7387351F1326287865CE1DC161ECB090A42010CFEBA597F27DE
85ECDC29DBCCB6D9498DBC73B1874401C91398605EF946BA02A0EFF47281D239
931EBB1E2AC5E7AEE9E235D01F773C8DFDEE827915C0A7C78295C0E53AB8D6CD
7678D9086F8CE100C702A4D8FC771ED7793A8EF69CF66B13D589FCF9E02CFA54
F9C569B164688730F542F14B014079C9B68AD1DBFEEB9EA6BBFF5CB9DAFC2A87
A5B08C010646D92F5116AC4BC262CEBCB0A08C3ED40D6EFA4A697DFD0007B667
F02C6FD553B56E95D9C52EF868950BAC3E0DAB5C0DE8BA4AF0BC7B69DBFED933
EA701162729E09120F351319C22393CF53CC916FD476B370AD98EB632F8CCD8F
F7B0BC3E66ED6CC5BA8135CA1ED3F8EAD50E0169EC0A7EDCD6E7F2199ABBA05A
6F793462900132DCD0C1B63BB81858B1B39C4D0B37080F08DCA9BD0961DABEB3
8273EF5480FB323E96FE4B13422D8E57345DF144731D1FC80B5C4E60FFBE35EA
15AC0A869FDC078B0209A473DAA5B9779044A3D44BB878F8C004C101EEB61F82
E8E7E282D0AEA5A83E36BF3EFB005F5E348BC8D3A83BAB7F5CFBA2D000354A8E
85915A99C8DD07D7E106B0F6EA0BF3AF6543A9E40E5AD4F03CD60F36E3D6EB6C
1096F8C099CADEE010B37B86D4BB8BBFA37934F5F845678CDCA1A2D342275FBB
C56D860DE672084C79448151C40E5CDFF6C042DC289C70CE2F34005A9C8639B7
DDEA4B4E26943EAE482BC25EDB14FD0CC38E001A66ED902EB8D3E02A0BC15DF1
D77ED93CD0D628A6823E79819A6AFE696782CC16EC2A69605D2AEB2388ECCBF3
CB2804DDB4C397D1255E8F495498E0F2C787FD982F3376CE8F4B058F3D9BA9E2
B49BCC2AE6D7F164FABFCF223A718077AEB17DBCE976E2150E2AB2D9959CFA1B
C49A4564E4A5DF65DC59D4DC90258B12B4D97D4D2795D695A857612F123D8B2E
FD8B9155C327AA551419BDE526C60DFEB2D0E4D4DB0040363FD72D753D977D85
52CF36A61B78509A385242684FD6003E1CE09A78759DB20082C20845A79E9EE8
7B7C077DE8A8E872903A52ADE3DB462BC727F7B99CCE26E4AE7765457D8D5B1F
C02DFF440EC502908EC4853F7290AC3A3AB132D9F5C66027E28B7001B9206A31
573FC6EA30CF3A73C4906695865E278680CE2E5A709A4BFD17013745A9C87189
626EBCB114738B1E1E68099609247953AC47F69D0D19AED1E1CA1EAE5A6134CE
A710D1A846FE0DB756DC383B10214F468D9380DB0324402195D25A13B0B4CC40
55807E2E37B5B441FC4E03AA7BF62321D81A1469A39CEFE7EC45A7BC55497D06
5F6CA304B08E0541E2A6A6A1035035574C6A556BFAA40596A18C36800DF2FE60
9B0FAA00AA6251774A4C6072604ABC6C90A3CD9FB43448FA1D25F01DF6240F1A
1D03408F123110E9D28D022B639AE54025C717B23DF825794EB40044541EFF86
7C5EDA4697B7B06D299F35010A0BA6E62C53B3B018C76301FDA4882B9B65241B
1BA291CBB06654D4BA327B75B3F2FD85B528550FD73F6D51B133B5E456C0481D
F2399E05BCAC07D8DCBA3698FCF47C618E32B215114AF40B76EEC3D4CD9121F9
79892418E35AB25A99E99527A9BD5F4513DB8FD3F35927EB74DB00FE2EE816E4
A1EB1D61512926EEDC70A5F4696FB5336F730B2CD14979F295B7077388003D21
E719ACF37EE84B5DF15491748CA805858CD3D9163CBC69D61FDE66448BCAA78A
E443AF6A8915EDE7B566D9B4B1D03BB91FA6071378BDBBDD8543DAD5A8739FA5
DEF049E14C236AAFE5F7DFCA79D0E8BBAD9D65C502763EBC8445B6943D122520
C64F184B979140A16BEF4E7C2D3E974D02DFA759BB3CE97C83E306D2236C5530
5946FA1607B41B3AEEA576F2BB2D11C8B5454301022FD9D852C9F689F81AF443
53C0A9FF6D7DFFF3995A35033C7E6B3B1F6FF0C61689309C965D8876927A6666
123D1A51BFC8E410012A1BC7063605B718FD146CB78C28ECE39185C325D2F51C
E63E33AB5BF68C132997AA8812F84D8566C58CD0EF15DC65F00EA445684F4A27
7165F5235E6C698E80C41D6C461E402E2A57B7CE75C0FB28912E90260FC69A6E
97D9966B7B1CE746DF9748A1DB712338CD8F84B6BF6877AAC81166FCDD4602CD
D6730275D4E90DE2993B589E4D1CC98DE4C31E4061BBB7E476E8D119234692F0
287A9C24670B73313ABEEA32C9A78E63938D4FFEBF2191602B9D8BD0D809BC8F
8C89E25F81E7E0848D7B501A23A1D8E5BE25043E5A142AA43BA34605C065716F
3F9DC6980216CF5F7DAA4418104CB763CA223474DF978BCBFE847BA623A89E30
D0DAC57787D6AC25E6BBAF2B556B84742B310EF7D8BC54F7A5204CFAFDB002B1
223C31B20C7B6A27666CD54DA24EA66A837E4234912EDBE8A44F4C8961097DC2
DF2206FD259808F13353462795AD684D77C04B441774BB8EBCEAA788F2A409C8
C0A8899429FF3173E93334EF35E9B1F8104A50ECCAB2EA84365C5AA5ED9DA6A9
D4B6A91038040A64A2E17F9EA84415AF5ED34245E0CB2B5721975FB554006CAF
FAF5D2776462B9D3A2C16D4B4E0CD538D218D3BD3EF56556F36AF30554B6B274
7794AF70D762D61D4485B6994BE6B14C6CBBC9FB9FEC882894D0B6FB8BDAC458
46E295AF5EAA397A7BB4C82A4FA1C0D4A358D3CE92E859B9750175F7754DA3B3
9A43A47618FEA0CB9F50D2C7B2488B8C86D7096AC66FE695B4A56CEFF53F13AC
21C307EB9322EBA1D224D50E1E2627A6C305DEA887D8A21E426F6C621C46DB48
04FFE48004D055288BB3E17E82C72F6055B02500CE2850591619DB9E8C1A26C0
D9565C5CFBE3BBFD23A986B26D65F25BABD3A62A573808D0EE71D29DEE477465
B93DDD9A3524B2C948F5454168386232BEF92342860EAE765D0579CFA3731E43
BF511227BDCC5EA088A25E8075B8B8D146DFBD9625097260CB54C640DCDD7C5A
2447C7B966DE6F344E597B63FA9C6C83212EF3796D6C4B6CED93950A6E94ACE0
FC4B967F7821956BAFDEDDF9F0078DBF987E8D805C056498C567624E1DE30A5D
A681E2142F855B27034A522BAB4781899644F25453C865CA6EAB0B3097DA1F07
88D8CDD0A0C75AD4926686EC26DAF714C8D0ACAC012ACF887F560374ACA9E064
A9E6E8602B0D2C1E4F78F07D67C1CF1881A2A06305D55F317079E34F3091D947
E98F87A6C9FA54A6751CE5EF6987481F3E0BF1ED61476341B00E24873768DC12
DC64C6F6C78DA37A68AE7717D31457D3479ADD121254E84859460453955D5911
77CD8C2C378EA4EF073494FDBD9839A6D66C7DB29985A7BA95717F9F6D21A49E
526C9F28B45CC91294D688D58B6F2A38AB86E711286691CC853AC6ED2222DFFD
DAFBE121034E02FDF83AA9C94ECA35D8524DBEC4120C4E370D6F15CD55AFFD85
A107826FCF48661DF261BFC236ECBF01CEB65AF075576EED65C796DF44F74D30
DD734B54E9EA9B0ADAB79E6A1EF000A101E8D303C260BF7E1B676EAC801FD094
62E1692918B8BD55F082563037547BADB2B7FE6421F8A6E3928DB9813AC63E0D
F5534A1B99A4B516FAEC4201EB41F0C5E86E5908B690C3A74E59B35F028A42B8
66F4C7596B3D38C5B0D05B6D696B92DA3098B3CD839EC6A1C8B350F0B46D6F47
61DE1334BD25589EBB86EAFBB18BB78F7C7DA35DDDB58910B29140AFA1A5E355
C3305E5C0D55A1F3AD72CDC11A1D536D513CDA0A234B3116883332949D854025
28277C1D8C9CE2DBF24C6F569B3FED18E866D2FC9C78F5106DE4FAA360937AD2
DF2899BA51FF0F98EBA85E387381AA3B764D963781AE79D8D9A538F7A1234D78
0E8896B09760F490410C87B7AF4678377DAFEE5C5D606013F2932F3B49ECFFCB
21F9F81B1F2AEF501C084657B602DC46DE5B616C30F88FACE9E86329455D4B55
C72E9FB1194A1841E490A418DC6BAC5D59ADF9375BA7D1E3B82026135986F261
89F7D2968551ECB2B96E4616E60733959EA2BD9C069C5732F9BE7C8BDD333743
803D9A6E3EA0D3D4B54E6073BA6A300D56DFE944C7BE825C9AEAAC8795D1F9D4
76ACA9AE4DF00F86FCCA06B77BEB71998EB5ABCDC3C25D8917787C95F652941A
C803A4555DD22994BDAFC949F3BE0AE1BEEBF80F70276935CF19FB703827060D
299C65F4338C9866EDF9B2ACB9D80D9AE05ED4A52B77B6030157C95D4541271F
E33C6A509ED1351B846C541860EDA81FA5B281D8BF3F86065065BF2961EE0843
DCEC63305EE5403A14C30C489A2FD6294D8B80AA7E85B20F012EE0E5FDC4E733
D61978F8FCF81B325B2A46F81A6FD85E8142E173A410410F0DB0EC286A84CC47
98DD67D9A0AF2D8103EB7D2CFA268193C128BE50AC27B1B386BF230ED7D55AE6
FBD85025AE79E987007B94AD8B136750A8A8E2E941E6F343F4721CF72786E75F
3A332058FEF484CC42E173CCECBD35B112AE21E0B56084884432C7F14CB0E195
870A7490A4DEAD69632B95796DBF4BFA9535D92ED385C2DB4FD68BD020B1106D
412A1B0182694F077D4832FF70334F9F548411E4824A27C58B604B4D20DA8584
E0EAB08B4ABE6F683A5537FCC2578AECCC1CF8DA47CF97D4BBA0923441874244
D4CCCB517A69B0CD050DF5855C90BBC4ACE948509E3712849D3B8F16025D4856
A3B7C00B33394E0A80D6CD031282D8B2F71FA5591A68CCE833EAD04AAA22879A
57FF034F8F426882AD472DDA4F4A3D82D0EE4A4AB6AE570345D926A1CDB3BD26
D344F35C25D22F7DFE73EA9A597EE5539AED2F7CF93C9D256FF1BD966B968634
6D219490EE014DB6F1843B76CE5C452411D92A7C1AC973F55817866377736F93
C2636C7694899DF5F875547CF957A1C1ED6BDAB937BAA78B30533314D951415B
FA5F5958AD5E0C8146B860B8E4D1C347D1EB1BA47A83B26DC8201E33FED61050
298013F278CB6218F3CDB4B3DB2DEB705E25DBD293D78C8DB63155D13E20CB37
596F6C07E8A120BC089CF69401061A7FC580B9D3F392EAA7560084F7F1E40C65
33BA87F72695CB9C64F038C15AD73B8A20B829205853147D683B3B5D160FAB00
0E3F3887ECDE254D8469165E802341FEC6E047F8BAFCFB0719C8FABCC0B91D37
F42E03FC3571E82591EC0214BDE140AFD7A72C6D09561C77F3D3D1AF845BAEA7
ABD7663B06085A1CD346B2BB2277B6CEE20873ADDD213FF4EFF7C6ECB50B6123
E5EE9A4C27C9E97B90CAAD1D708023F42A1C56DE2ABA207A5782227E16C4347F
069B91374827C177570E7A6A2D28B03508C8CF69E6AE36D014338AC7B4ED8736
EB12A8327A6260C2F55B16CC28DB743BC92B2EC3DD60CAD4A584DBEE052EEAC5
15D8EB57A908E93F39CCCFA5110FE79DD72C3313AB1015F89B4354ADBA44B202
F6DC238ECB32D8AA6697AC471870B2B11CA8135039C2A7727E1AFDEDC47C2653
D37E664D9C94C36A9A10F8EC0444AE49D30AA0DBC8399E79A803278B45930BB2
0ACB7F2D57C1C0D15D95C687B7878EB1BB1303DA585420AB8D5C8D7E267F5B59
B7C3F0559E4ACE8492541F43DDA05DCCA164D85BAAB0B04BAC93D496C3B2FE72
4752408FA7B9CC65406D5E53AC37FDFA818B8FC277244142380311FFFCB205C6
2DCFAB012BC72063D84E601EBB94A9A528AE3B47FAF6B5932E4FBF431F25C82B
F5EDAA55AF3EBD9A175D0FC2680754414A78D68DB12E037D07993590C3ECA58E
C22FE0007484431AE18816FFF594BE52555A630ED9610F590E29A1FEC9365B10
D1E977FF85A8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR6
%!PS-AdobeFont-1.0: CMR6 003.002
%%Title: CMR6
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR6.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR6 known{/CMR6 findfont dup/UniqueID known{dup
/UniqueID get 5000789 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR6 def
/FontBBox {-20 -250 1193 750 }readonly def
/UniqueID 5000789 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR6.) readonly def
/FullName (CMR6) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 49 /one put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DAE339BA29C1C6F656
1DEF13780383DAE38A868377CC7D396B2A05F341AEE0F8BD0A0191F51AD11A4D
2E927B848A1EF2BA15CFBE57A51E3AF07598275195C9613041F71C1AF39E61F9
EFD5F6512FBDA76E29DE6B508F62F5CF9F73F5288DF1C7B0B82C92D3B6358BAD
EC3CA20BDE55DAA7CC58004AA86B6CBF8C410D8287E88BF20588A39309C2B703
CED322F030AA6069869064486CA651DA054FF3F5E56534CA358B0829A6B954D8
9103436E6B06DAD1658BD4A95AB41343B01F5866FC87C4EDFC71F1477C98F8E1
1DCF27EF743FF90BF918AB8C4E5AC35841E2F745480E5EDE1C1DEAFAD8D0018D
2C1F1CFCAD9F6609859DEDFD1648A6CD23D8ABB80747F94899F17C8F3E6CA55A
E176F19CDFDAA0D7C920B3A72051A4745560AC81978C92459EEE5AFE85AB247A
32981139CBE352B248F4BE5F73503A084A3E91F05328EE521D9669E44E202584
5407E7846F9FEE3D54EA18FFB144BF2D6803BF65AE402034B3CDBB40DD24217A
3CE0E95E2717CACD603A958187C42B3558AA38D6B6390EEEDD396F96E6041FCF
6F8888221AFA87EAD79F46E0E32CAED91E6C8500879AB6E580C581E8C8CE9B68
2BB5EFE2604E8DCB2432D39D75EE556969F1B2FBDF6A4BC72D106AA7CF22C268
464027898B311613E06E1584707F262F71D9F49D2149306A88E02BC60BBD6BDB
EF41D90F19197BA9AEF32B5E63D5B9FF41B5602F9F786E76621DA54D574981AB
87A72081EA05D6C6BA940EFEBD0904EA4E77BBCE17E20B42E1722617E0F6EF32
F1ACDE9D758594E9C81049CCC10605A27C2A06872FBA9F159CB155609B496ADA
4886F478E44029B5E620DE8319E257697E93E1CDFD27D560E2E4D34507020E2C
D9FF06BFA14E056D81DF701FAC3ACE4BE6C098AE116E079F0044391EC1661F6E
7A93B9320BD7F91E8FD2E8EB3F5CAE997D5CDD35107A1D35302260D1499B8B65
39625B7925F97D917B66BAFEEA992873F07220714F192839948CEA080BDB9A03
77B9DD032273DDB5629CB28B5D8797EDEFDBC601823E038384C90C79012A7D96
8F27784DA15BACE21501C26E3AFA5DCCE81B52B0ABAF71A35D33103EA86F2415
A39A830D559C5C6CA7423945BD3DFA942B20A06D7A8D8671F9831DBB52907AB4
4E54776D29C6085CD9970B6DD21DD3EA8EB09C49CBEC6CDCEEB0BBB1B8827109
3BDE64DDA024D67F098D6C1998506DDFF7907ABAADA1C39C759C850E0C6F8E89
A392D1C9329ACFFA92D361218D75E115F70A47C53B73B356D703E9C499AAD098
AA9C8119EE9E9708A9EA3049E976FA19AD04210D5F6092C7903FD155113F3A3F
269B746560F70970AC9F8D09956E0E84DACE4112C4E7C7F6B3F0B63D26EFF95E
2B2E9699D16BC8AFC4AD9113AA3A974C9E82E877288CF71E9169D2DCC61AAAA6
C536E5604EF0716F6487292BBB677518504B52C63822BED3BD5FD14EB41EE6A8
AD4B6CF90D39F98E12A765B645CBA3E8552FB9A986390212CE119E7C3DD675AC
17BD006144BEC534DA2A860188619F17589008409C5A309CB83FBA70F6446B6E
2B56991B6A03B1DE10C621591CEE45BECA27C54BC8B4F1754A9E8F660812710E
117850E1BB6FD89BB13F8CE391C43DA89EA67E9C3E7A4697790EA26B0E4E2E80
DCA508873A7AFFC11B8C02EF86C2316E8D8B6BCEA37F81A3A87546705F070C3B
9D4D28C366CEBC1EE485B8E2357DBE46E86C87B9939DADA60888AA9F1B92FECC
CC1C198DDB594BB70A8FE690ECAC21A414BAC89BF019F34D2A130F485EAE35B7
2A10C67EA3A48A4D9734759CC93AD85C6A570500AE5AC9973FC76EFA06BF5DDC
26E20E28D16B50957EE01AF2653F8D860817967AA5A9BF9BF7ABCDA710E9F34F
4F0EBCC32B3C9C2971F6225D2DAA6A451366B83F32B2ACB83E746D365B2DE38D
C1AB7447FE7B37F9630E410E5D8F0ECE74DF46C538947B3A167AD9F3E4A7EB3D
60F5425AE75AC3A27D39311DA35696C3DC7282AF1532E7AECE63D13DDA0296A2
01487185FDF1875AEF55A36C17D6A8DD329279D229259463A2F05CB7A874374B
E2320E1F6CFECB9C1CE62FF468C29751ACD9754AF1EABE8E7696C2888914416E
235B6766F20FFBEFF285277B639A51EA2F2E30D207BC891B00F0436008F980E0
9EEE7FB375BB069B9E0BA11DA951A99D8E60B4F920A0495C247FA7DE904765AB
DB5C3B2D634757E43EDD6FAA4DB3C67F82D6853E1170F0B2D8CE496DD4E72B0D
28277BEF172F1402959F64527F9B640619F04416DDB9D05FB2ACD019CB9C119E
E544D24EA6DAC5C69785394EA50E6EC9AAA9E14B904EAF29A733C6D7942B63F4
85729686742F26DEF78DF0DA1CA7CEFBB684F4CAD99021A3B3D1FE03B9C5A4B1
BD04CAC89BB91B11952A2B17A61789BEE0C54B46C03FE9A1AE73D17CF94BA30A
237C29D414C3BCE8E3E2DDF83C0BD59DCB66C4D2C3DE73DA8378F3C6C8035D28
7464399857E57651A53E9C4AA68DFCA91B2376CF98AC5290FDB9BDAD9EF1604E
9B0A70EDDA1E564B6D2456E7BC722454ACA8C4950FDD44B6EB9AD01169A9F845
B06A0DDB7897C847A5B1F42258AECF3807AE936C8F52C3A7A0A85D68160AE442
FE81543DA6702D76AB6E8701F80DFC1D87C961E350D0E52AB2A298B9E5908600
7E14D2A87309043CBF13F69AEAAB1BC239DEA88EB5176624F6046664B1D2691F
FBB2071D3706F97DCCA355A6DCC4D09FD35DC078FBAAF672FFDECEC61050A120
10B5A96629041303FD01ACCC7686165DED6AA712FF8E5E85DE33C4E7D877C49C
6C469A90410BAF60BE65ECD91CDC2EE7AC0CA8BA7B53865F26092BFCAA0BCA77
B80DC51DAD09C93C8DD8E43502B4B68F3D5918C3492196292447732BA90F5AB4
9F5E1D634ADE1CCAAD028DE5EBA9535F6FC5908DBD2D643E0A7E059C8C386FDC
E72659C0033F535C0D7F6B98D0335552D0BF3C6E302B672A5EAADFCEF81912E3
8F54E6FB7EC2B325125159713D0AC50DEE3673B9B148643727E94C80971A2E73
5E1E13237BE69C84FC039DCE02ECE2668AFD047F21A61BB94A9F498C9FE5CDEA
B274B40728B6F6CA9B6C15BAAF92F465B0D7311B46545CBA90D874839443CCB9
3110F052EB247B24B45A3D2FA6FBC7EB2A4BEC2A5892914B3C5EA3F4F9B9DCBF
6F932D95700E045B49E4B1F2C9D2A42CF39CA2F5A2654E6E8E6E92473D28AACD
5E35C6705EA728F704F5996D286BED433F976AB7E018621A577AED7C0AC0A84E
A032FE1869F603E6F20386E3A190A30A21EA886249ECF8CDDE2C33D73BA8647A
3DCA7A8DD9E8EC8D9A415D126BA38B6771C489DFC419303EE9C1B83FBFB3A0B8
97D64F30E4BCBEC24DF603FF3BF541E00D5804B6B6543D3D2B661CC551D497A9
9DFFF535AF424B2F3150BB39AAE8CDB306AAD37767BA10BADB031DC2FAB16955
EE78342CCC0E8B5976BF98F215461A8C6F63EBE6E2F1A1104662DDE53388CB51
8B44F3534853B8095F3B746A2459C2EF800FB1EF7F235EBAA9731E3AB3BE4369
1D3636E3ADD5BDF0C34FA80E90D8A1DDE770943FD196E0A7C5F1FAF6970B34C6
4673AACA6B2B5C12B9608521AE736C1F4B97209B063D991300ED5AF3D7F27E76
68E0B858FD8BFF86581E2B9548C691E3E5D9EC4D39C9715CDE86C7D22223CCEB
8A38C776A30AF14912390A7546DBECECD7A687D4F08646E57A12C80DCA022B7A
33399761A50B8E0ABEFA1163EDEC3DFB5DA3248792EEEDD894872D4E6814B4C3
548BAFCDE0CABBCDB97EC6D1BA47F2E77CC1389BF19D73661749AC33F46A618E
A665A85776545BF9662F2179D7BFD604FA8EF4700591AF3AEC647E27B24B76F3
133F9198DC15C1AED830E737909E43EB91C334C44BA35810007A3888E33F5DA5
B3B2C35481C648AFE630CC3E08F77744E401B2934E407D1EC17ECE737606B076
F8DE8EF3344F57495EF49D11580D6FB28AE0B1422521B320843B13467501CAE2
3DB93D7BB779F73B6AA30050DA74BDBC3F8DBB30F32EAFD07734A151BB2BAED5
C9B1F790059339B64BB4146470F30928C9A49AE88906BD6FDB7431A4B50809CE
0F67ABA01CDCC2320B0B097187B9299E3D80CDD7BB5DD5BFA7B28D924C5633C5
45A23CCEE097C41C3759C1FA8DBA0DD95034BCA89BD23FAC18C70093F40FF2F8
0FAC5DD4835F2DFD40540E9A9E9FD951A8AF2CB766597DE00147B163BACFB7E6
EFDA4DED594F1C746D8B46A1145E0E4058F5917B3F21E9BEBDE745EE72CDCA64
FB31EF7A2E55265F32559480E2B6726D3DE26FFC97EB4E3160F117E890C4B2E5
8DF310E6A728ABA85540F571C024F8DD58E1D7827FE97CED5EB31547EBC36415
02B8C0E10B7E37D816F01D56A364B8552CBFAAA95BC4BDDCFDE91CE0EF005B4B
7AB56FFB47A093AEDF0DE1EA48FC8103CA3CA1470864D2693E360006D05668A8
AA422CCCED20DCEEBEA5CE0DA1EFB00FB93E922B18124FA11A88D0F6E0F719DA
57603DD5DA42E1C56C2FD9E5415AA199D4F334C151C1157E75C107FBBFCEB706
5F4EA47A29B54ED8CAEB8DDA2F53D2A703B95487619780A52DA1270011648A28
AA64338E04AA5B92C1EDF3D8DA34FA6D227A0325EA6F22E9B38B6338C657BB21
CD4C582DC04010330F62923F817E4EDC6E5C0E6500F2A975A8A95BAA30C4A134
BB31B5AC45A2E7F6E9CDFC810D41344C4F606049445F8E93D74271C1E29DF7CB
5459593BA28AECF64D903D3E4D77CF5C04B06DE44A41EE4D9FC769854503AC85
69E4A5106E84016DE3D59865D4AB30BD6C9E45C45DCB5408421CC50CD6179C85
34E55CC70FBD8FEFE9F1D5160664981716E3BC7F24B6F54E0323D9BC4B692971
24419EE62D8B0BA726E2B4294A9A76F328B8101DA29E78BD5C4AC383350FE196
4D42DB1653637D19530124858950C22F1E9CF5BC07D46B7A58CDE19CC88DCD2E
7FE4EEFD8AA6047E919823C8CAB2EF5274F45E861E6508CC11A8AA90AED2403A
B2BF1315C2157B3B50A3685205D93E40906EEE9DE5985405974BCE0B84BB37DB
080A45C5237B269B93C0A7CF294A18B45464A41F604C494CBEF829A381155CFD
71CEEA54CC39EEDB6DF58A9896246B09F95DC6BC40BA6916AAB5ED3D24F66154
3662F8978FC63DA9280FF7ADB09EA5BA79D3B66E0C88BEC1EDD78DA93839073A
A4D7B0E627000C4ABA76C47CCFEE92E319315333A5584A951E34C55412049C4A
A5569FE65A006F77B416E0530AB6A8E7AD6C72340AD4CE25937158FABB2153EA
281E1D840206F5DA38E00815E9081F81DAB9FAA8F4DAB305867AC84735DB4F52
A36129929BD2084A8EA37BB6889695204BF7290B68D5E722540BF8A276F8BB6D
451D582EE59D2FF03F6B97DDE05FA00C3D375D2D0AAC8FE298F85CC067B15481
48D70B6A0354C705715B891915FE8EA45244677B9FCE81E72D66177E309F3F83
F744B9EA9E55C3B30DEC6E5E03B3988FD526A82A5E8E1DC79127FC62B2FA7949
B3AD3148868DE22BD4B5708E32CEAAE6ADEED1F463EAB9692411E18F8D6BF391
126B2700B4CF3B59D02E3F8795130C96285A63FCD1E0F647ACB1D35E9C58BD01
1DD06BABA00CA4343BEBEDBE677E053E9732B33A7495DF51782A07DA07F5646C
770C957AD915CC70BA8E08BE7A1F4E6BA5BB9C603E38F6FB0A2578471C4D02F4
283069856D926B9076EC73AA39CEB0A061AFF1575C7093FDAC9F89C3DC06EA45
06F3C2A3BC9FF21128B10CB758DF0F099B459A5264A8C24C098110D2BA1A8532
8FAE146A91BA7D033F591AB1A94B8A6FE0FFB610F698D216D58B4EF6C87B1524
8037CBB7E23D8550A620341C6625A1A2ECE7CEE2598D66277F857231A36155E3
984F147783E9B93975AC38A29F2FBCF704C8A04AD84C3E04A12D2321FA56811A
5B6744813CCC187968C5C26BB8D3E6615A912FA5369C01CCF8C0DB790593B190
1A90CFB5339B8771F325C5FC448D36C7312B11A15A8635BAB59CF3CAD176131E
026F6E141B2619EF7F3048750CC9291397F141591EEC8B612D6656DD34DB54D6
DBDD303CED74BE76664E7DC86FCFEEF2001C9DBA56418FB61F589566A47AF36E
C94671C5E8939AF9F4D53C0DE7142B7B63C86AAFA65877EBBB48C64589AFB2CB
1280AC099FC48058855CBDEB6C2D2A0D092267996591DC3B5EC8252984E9B27D
2E9EDE8CD8303F0905DBFCAE497DE1B755B924452CDE11CF4F20893DD6FF7251
427F520FE00580DAF1703FD968E0F8ECCDE618E1EA5820EE6CFED97C78864EF6
26FAFEEE194A268F24249D44829AA360D731C34DC285501E966A959180718F72
6330E4CC060588A2F65AE64A720DCAA818D49D4440F5D0B6C1F6C3A107E12445
F1BED2D3FCBB87A9597F01C7332AA79143564056219BF87D4B907A04F77621AD
054935E883B2B137D3D1C4BC792E8335CA08B6D83227F35736C41312A0BB077A
60FC6488C5E02FD51A10AC113D4EF70038C649C1677B2204A77F2ECBE9B3C341
F4126BECBCA61E3F3801F9188A3775924A62D30FB096B440286FA655EBA00A74
9A4162904BEA07CE68EE76018346DEEE20839C9A2FF71179B58E1D4AB30856B5
F5D97295A097174467010B15D733AAC5813CAA633746B430B1AAF9F997FDAAFD
436844D1A56B8E25A89D2CC4BA6EE7ABD167818FD4F6C747E07B262C99EE2C35
323F0B471586CA50F54C6381B052B15B0C58C19DEA82C0CA29F00400B727419B
2379979CDCBFA966AD513FA903160C571C3BF1BA239540B11EF2371A3880837C
6D6CA2F374280CFA1586427AE975A2AEC34244874E4D441DBAC6CD1828841C91
069AA87FAE849C5DC7C9EC1B9876E59F3CCDF8BB23D939F5348D7486934BFB02
CC5A22541ED352616830A510DE7732E5D8F7E785BBD31C2BC9D348CE5632654D
2C1740F89D57FB2AA1FD8FA3304EA03F757BB8F498ED98E48485722E78D97B12
A05F3A28438084D1CF90AC4C3FFCD7B3365941C45E1E02CB13CA1E99F7FA1D00
1C9D489D5C95F019AB4CE89FA3B6604473DBD2CE8E278969E0A0FCBCE68C23F6
9381882443D3FC16966555FC222F3FC4B1207522201AB7A15A7A6F22CDC9D392
360BF4C95DAD35770E0AC7E5EFF015F2C74ED7391F40EC94B8D1C163B5DEE5B3
911A20C2625AD3B24BD94D2A42405E655DA47D3F94F882CA2F479437B4E0BE71
8AFA4482C6FB270F8D05B4599A01403DAAA90C01DF3AA7C2BC7E66AB6AA833AD
FB6E5EE13E45CC7CE7E200FBFE639F9CFFF5D08512C02764997FD28368969BFB
0876F236EF6189BE73AD827332DF1B2EADEAC0ED3B939CE5BC3CEC78975FC636
44FCBC2CCF4396AC7343EC62E0E4F3DFFA2B880BF31D93ADFE201BE9CCEC8BA5
0B9B919E05B851E0909968DA259EECC6AA0743F25247978CC09C28C4F878E29A
5070E4023BCE95FE0ACCCC01D0EE219FA8344E8F6D7D4347563BF8AC030B9097
41F24D4BC9494915A82EE9FD37FBB6A46BF077B728FB569B1258CEA5F51F36BE
4F4D0F890D782E44748CA3FE8C8A515998371D9C7D2311F192B4B7E7C68FC6EE
3F7136714C282A2570FE591F247A08319CE9EF1E43274E4E57166E31A2ECA506
85350DA31AA4C33C9687F5210BA225EA1007C444FBFA2126769767E47A967884
9F68589E4BAA9ED32A7A466DE35554C132810C68ABDAE536D9D884352F28EA02
8A555D2CE11F30598F44A65E2D86B43ECCBDEED9E4E5B5B7DCDA20EAA09D9FF7
422FC91F2201431A9E8FC624FF44D26C0100183D77BC7E6B1A6CFBD3FA8BABC1
AE4CB0FD382E26BE0A83169B46D91429DCB746A0326243E212F802AF6A56C709
6E70C6C7CA3775C382F911F6DF3D26A9F9F39C6A49A61FB0FDFD443ADEB01F74
1254040BC520FE9C85FDDA97E17CACFC504DB28E16BF4E50174DC918B0EAEC7D
D87899F951DCFD06A4E5F5A24FAF1F5AA8706A76545FD0D88F3C8E8DDF477440
DBC9396113513CFCC3853C7758A936A089DB60888EF0ED170DD9A9DDE9F14BCB
7CE05C95850315F323FABDCB1BCEE1C6FE61A02975309083DAE659FF4CCC84AF
A6091C64B782D173CEE55362C24993238BD7B04277999D66ED94A1C4F38CB897
B4DB3A98C63C13DF8C2CAA974CE91FCC4D14C4D0708482505E90F21196EE67E3
DC18AA9EDC1C49F513DB9222691CC88EE4854F29D8744E5E37AEEDC36C0CE33C
D666B5AC9E4E3D3075BCA7DB46980A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMBXTI10
%!PS-AdobeFont-1.0: CMBXTI10 003.002
%%Title: CMBXTI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBXTI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMBXTI10 known{/CMBXTI10 findfont dup/UniqueID known{dup
/UniqueID get 5000771 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMBXTI10 def
/FontBBox {-29 -250 1274 754 }readonly def
/UniqueID 5000771 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBXTI10.) readonly def
/FullName (CMBXTI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 97 /a put
dup 101 /e put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 109 /m put
dup 110 /n put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA61972029CF9B4E1F6A
FFF97E53D6378FFF9043566D67519B5C031015C0D52A7B292D219A2BEE49FA56
820ED09A28447A71C5CC595AB286EE693EC741AEABDAB0688F7B46D9D584CB99
DEB048F0C0723F0D7FB57C896218D2AA0AA4DE241ABD632E25F0B47243CB7DA2
EE53CCAF1682D9B580006432DD7D53D06E90B3457FDBE18179DE415DACAF00EB
4E01CB49CE25429F8BD45069477DE90EDC87EAC15285D321569F8C19AB5100B1
DF31636EF29DDEB4BFA2AD85B83CC7112220D70E69D5A39BC3558F067A93C6D8
7A78976F7B93A589F0271A034D1A8BBBF082841719E2901720E89568E9376AEF
8D41ABE4BAF9E79809F5BCACF29858F8675E37804758D58F8909027A00CCCC32
5441C72BCB031D09077BA9F778BDF52F172C2EE62F0B98EF852ACE037C6240B2
671C0F01B7D4A9276A8F6DE3B6BFC2C34DC309E5888E249E398CD60549DDB61E
7E36890B1E37E26126485E49114B7CB938E2733D9A14288C3A763D326D7D9183
46B970D455050FB97612BDB2EB29E7D71C909B10CA1D479176652712C112376B
085E9F99C9A488C8876954EFB7520CF97D08AD84341FB55764879C5CDF8EEFF7
DD31DB564110A07119E52453B778531FE181D09D1A9799D7AF4773AAF77EFF2C
2091194E301CD88C97CCA29AAED2CD68ACCD8CCE44B9F24889A83048B7208BAA
84E136C58F9DAAF73815C6025DB64C45014BC472358DC014D243D189ECB1EEB3
267345D1FF4B6A01246CCF5FA90BB355E3734A7C774DE68C01B5F356D645C4E0
1D0B7734E05EA28AC6A9BB2123EF3C6E27F52982A7612A352213C6AE3E80A819
2304A70DB8A2441DC5321ACE962C6480AF736920B64A2B433DCC3519EC8B577A
30B0819700A2281212CAC280A0DCC50E78295B98B2DF97A78BDA1879E6B70C10
7BD15FE29C4EB1D5A33037F0AC9BF8CC1FE88C52CD114EB33F1C6F8ED88EF98F
DD0C3913DFB36147F581C91CE83CD73A0D012F3D0FFB162C0F4597ADC8D93911
0DC6D68F9FE702FD0EAC5039D462756551C379C5F4DBFE05AD2D1BE0EB389AE2
391E461DC4455E0D3C3E46F3FE9BEF488730D71ACAA63BEE72367C52C4F84766
C24E13D1E63791B4838161AEF8D0134145BBFA4D848CFFF1DED6814A7215F4F3
3E2D654C27F3279DBB22A568B7BD1D5A9D75C7778D36C36BDBE32C8FAE4A9209
20AF8B705A77CFF4AA9ECCF6011F0A359556ADBEBDAF5BB706FE6FF4A745D841
102279B66CE0C842DF8C2673ADAE354B2811C48DB05994388AE4053F4651A884
48DBEBF20FD05DB617F8FECB667B748BB5741D6EB62DDDD0FC58537EAAD6FC22
A11ED24D34827C3446C8FB81E4A0E904206A1053AA9E718B0405C6A7B8B893E9
30E7A31B9AF8A56B5EFE72FB5AEEA79D56E19E037BB4ABCEE079ADB53CA546CF
D98F7B38973CE3A6DFB315E87DD1E60C34344656D76C16E1DDA43C2ED276458B
11D7F4CF3692525C0D8B6307A2993F400760275A8648A0048E0C406279D48045
D77A92E99F9CB5C05E8202416EB6FF308C4C979895211450BCA82B19B33E7240
CEC18204C09AB3D7F8025C0C909BC03A1851287ABDB975A32C3FD8A1C99DD90D
4B1CE2F5DDCF140D4D5A19F33241D27E8EBEF4ED569AAC255E47813F31B30109
7075766D5BC1731B082531F3D132A937717EF67F496813139E8E263C088F62D3
DE0EA4ADAF3C088F562B0BACDC184DA3BD0D5A8A4B8EB487D0B6F1B74A969942
91CE8CC7A33670BBDB3F1E1D791F7F1D3A3F3183F2410DEF99EB932CA80FD931
C62D09A0ECF271B5BA043C9A214CE631CF8239ED0640BD134737A3E31B851DBA
912B507F72B80DD9CDD23A697F91D66E59346FA3A75726C386827D910714C989
5464B041E69F4B87290BAD381600AE0A976148CBEC8DADBFDF0CBD7148C3AAA1
7AE2EB15686E1AF68B4C90130F795E86C9AB88556E429EC943147DF363029B81
4C637900FBA19DD98792F4CC9888AEFBF9F7765B817ABE83494CA3FBDC79CA03
86CB628F75612209DE9CA4D585565E9509D5DDB8C00A229F07918B062265AB29
176657CBBF2382A219E573667B14687647DAA7E9203FEB4CC94B10B57F4B1143
C4962B6A888D62093A1D49E2C7D65C29C500B61E810BFB94DC2DDBCCD8B6C61A
911C2643F55E9E2101B1DC7D7176F7743492AE7CB84D460E8C00E91E5486117B
D9ABA9E16D1606705A0F698EDED5AA877A2CE7EEF25ED1D97EB348115CE5BF26
8A48BE961CDFC6F543BC89DAF665A681908ECD8CAD545D0A72C9C184CE67F6BD
7B51399925DE379BC59E9155A30C67D73D01BCBB1886F8276AAE58B2422DEBA8
266CADC83429DAF4F80CB25E0BF455CD7863CFFEA9E318FD043908D427CC07DD
683F6D977680E9B4F6333D4BE7E729F4D15C07C917862B47F0DB2E31500ED372
A556A8B617FADDA12A2F62DA2D9AB46479FFBE4FA42D9B8D597CCF4E6D04B418
8A9B523F4678DB40E7F325F81C1EB345D71849E57B059653CAAC7D9D56CB2E3D
D4F532A2D674BDBDE970D9211A3EEEB005128BBB5E0C313B42554F058EA1D180
BFBC9521FADB7DE03EAFE314CDA873C3532CDDB83EB0A6A7454EE85A4C36AF2E
895BE8309FEA168B73C6AEB2D454B234F1E2EB554C7406B79A859F6B303BE795
B6B4DBF104E75838F3EFBCF85E0B865779B016AC38272F8BBACDEB13164EB282
B59BFEB1E3392885916FEEF86A8A975DB9BFFF17B9E2173CD18264BB14CF5633
FD4BA46D7692CF7CEAB7EAE80385566061315F8DB8A7F495E68D4008B09BAF99
DF4275727F08C5FC58BE9A084B267D0BA62A907F22C466A3A79CEA6C207177AE
B1254F0810E6092DE5DB1BD3F238EF705DD4E806E0EB1988F2AC92EFB8843064
3CC3CA506D9AAA0CA559AE7157603D34BEC19D6019F0566974BB835DA172FE37
C15C0367C8FC164184648BAB678D37871F7F610EDAFE3F49289C6320F9CC113D
44775EDE28FEF4E14EB5B426C06058FD32AD12B42A2FFA0D9CF0C7BDFB6D7C4D
72F4FDB716D7C8E7DE84F614487ADF4DF5F304370043B25E07445F8C65109708
EB771F62E01350B7C9B659D05305CC3E4D94378BFADFD8D94E5704FEB2BAF58A
5B874C7EBCED806F068E93D4DB888B325CE246D02D1220ABF55CE646DFB45F07
CB8488F229A5562968B079C2CE2067B22B98904D977E3EAA82A6BD44135A6F07
36E3252FDCE218EB5DB8773E2DAFFD1DAD53671EB3D83A275D011BF5D501A22D
407AE09257CD21297B617E0443FBDAA297D37F66AC436DB78B410E79A002233A
0D7DA619CCA9DA4714325A51CB0BBE9EB6CEA352BB1A0A2FF83610B2A17E1948
0E9285E1570CFCB8EC7E1D691A72611D336DE5C6626A1D1D2DF363A1D781DBE6
1235F1D1805CC2A8C670005F84FD468167F8640B12929CF347538B94EB37DA39
904D4763D93E757AE2B4C775D98E23BA983E35992A292A04976544EC462CA656
E5EC37EE8EE46BF1C3B0B4C912DF05AE1535CC654000B06BCDC95D9C6B5F36F8
FD8A0EB31A02C2B863DEBF8FEDBC57D5F93D2604321FA66070D14FED60441E09
999B90A5FB715347583A35314381554031BCE4E6E73AD3FCBB61ED0D4C015863
119C1D945E981AF3F38C81EB3A350A70A63EB06119965C90D7EBA669359FCBDF
A87C4DB920F8F3D99C73A0DF7E10D3C410696D679CBFAE831E3E99FEF6C038F6
69C58E1EB6F60FF587F5EC561629EF429734CB886AF914AC3E6BC04F21D73F18
4CA12D7E033B301C181D15101A986BB95132DABEE082A617520CF95EC9069499
A02F073D7DBE41726B51FC05A9348953495B4CDE8D0A8F8C04D07ABEB3BA0076
3A80F2E3B5804947E690DB3A7B3BC6C48A67F5D45F5C658FECFF28790B709385
D24D02FC3B0C9F9AB04E168BAC78F0837D9BD402C1ABFA84148FD815240108CD
511E50FB8E64F20058EE54E4ED45181AD9BB777DEE3303C4991EF8EC56B6C278
CE63F6C2FF92308A25B9AFDB4585A808AB3F03D8A15A20FFE399DEE429C959F8
B3DFDF81433C41CEAC874479A2C51F9FAEAAD5B7B23230B99523FB256896A85A
8C48C057A70DE745F753B4183AAA6F84B4ACAB090F33CC2C31186D1D8A0218A7
4E1987D86B9C3602BA294CD29FEECE4187523CF511FD075692B1C080A5A22281
BAAA4EA701D7573D083E2F6EDEA3D49FEAFF2CBF989703E83828E6C7E324558A
FB73E3388F0B0E6A97EDED5A9553DD33DBBBBAF2174A562AE2B8A4B6E7D13E90
FF9B7D650231CBF9EE48DBDB00AEE2E0FEBF8D6778F19CBCB8766A0ACC9BCE26
59771BFA97CE7BA811A3A6C8CBEE899839E525DA2ECDF66CD99FCED902AA102D
92CD9A279453BA74EF8C0CF32C11A412A05CFA2C187833F885F359DCEA34EE24
E90F7F107A23D9EE269C15A647916F56C32543AD5F81D90C84B8305E5BFEF1F3
B356CEEB5BAC54AA00DC9C6F03B4AFCF7AA4D31964377525A661FBB743D39964
47AFBF76C8FA874BCBB374B02C538AC626004EC8E1E9030D60C4A097CDAFC143
732FB7431008CF28ABEC4529F4689720D4EF580676CA855FFEDDC66B7C1DF07D
B89EE98C0DB6FAA5551ADE4D674B51E4E3FA4B24A3DB5196E01C6CA1DF5D669A
3C0FC57DC1F576C2BA14D5DE284614AF3276E3A1159CBF8D40426A60E8C5DD42
6F1307222DAA8AA78BEE55C27E26013120FB5471CB33CA4FB642B1C386018EE3
D4424CA411F49CD569CDACB51AB9BB5E66E1E13ED5F8BE0E912BC13C7B23E10C
042C33DA19656264D7473B4E0C3DABE14F9F94450D1113C88EEC18CFEE640A6D
9A40DA9CCED6EC5E2E9F1B357DA635C3A2C5A23874E496B868FD0260D30F1780
878A900B90637A1237C63D83335A3FD4A664321C048BF2273F9C4AE3161E1F06
E6EA5F3F15CFED43C622E0D7E245EDFB866398DFF2EC994674767B7F3DD853CA
356A3607C7BF8F9C6889EB9942ABE469EF88368742FB5C41D06125D2042EEA41
4B344AC718FEAEB308302F5607C06852A30CF778D236EC90CA10934C629FD598
90176264DBF9C1AEB33A6028B9EF09B06BCB182DA58ECCAA4E2E1FBB13868C98
CEB61223E9658EBF003AC67493587A156EFBE73EC88CCDD55C9C10CDFC52F7A7
B274D631DBB5D629F41AC8760741953A6B90C6E9E4D2C79702C59EECDC65D894
8317D67808CFBD81953AD32837A42EBBE48F77D6B387E272855E54ACD32D3377
E19724B3BB370A71C633C3A41A0523FC219EFD5310EB3CB5FC93F0F9E6BFB115
17E2B901016CE8DD44BFA8590EDEA88F5229FFDB83E401034C826F038D58C19E
54704A4E2E36B7738FC6F80DF4D82A5285853C49F9689363392536C3BA25C00B
7885E7DC3951E9B5D22414C9E9A264954CCCFAF8BCE70CFFD4F726263EBEBB70
D52A58B3D6BD029F555A630D687C7E7103C8B8F2B33EA41732D6FB7FA999CCA0
185A13C8BD80A2762AB9919C3E9FC07556BA8C7149B4CC5B58DBE84297E3E8D2
B34591D9FCAC659C0FE115F34ABA807DD94410AF8F532418382EF8F7980E1598
A97A61926B809FD771B2795C69E6B1F15FF0EED329FB793FA3FAF0580ED07F51
B0E1BC1401EA5026897990CF09F9750268AF812E89DA551EC14B457836CD38E5
C07179A3EE0ABD3A85C693ACA829A5E492FD4F1BF12725544FBC81FAA2004784
DB367184315C68BEE9FBB1D68F91C9D0901BAD3BDA4FFFC203C232276A495EF1
B2B82F36FE36716733F0E993B19407744C067324BDD2D5641977B1A118DBB844
104397F963CA2E01B7155CB84BB642FC315C028FE4502335F761A9DDBEF7ADE1
ABE87D31AF848A5285BD8328ED3E8A2A608590DA11968AA8C0D8010329A9E172
AAC2C7D0061B14EDAD1142FEBD3DDC0ED20023CF06BB146B3F58A6A197DDA1CB
2533B236FAF2825E8DFE70B79A0938D79664C1D26B4412FD10C76729CB22392E
8976960ABED0A03D5FDDC7C5C2C6221BA1FA08020B88FD9AA0CE8B5FD26D58A6
79339A2AE6730746B8413B6E05361755FBF11FBFA4974CC1AF36136803DB8282
A7F5429327B875D0FD222835C7AB82049CBDA6AD1731F6D06AD2A20027765CF6
2F7E4BE9521465A7C3E968DBCF95F2C62EB3829CE6DFE845EE20E8EA89CA6C46
BA14E5A920D8E28A4008C210F747622AE31F5F9036C70FA52BFFF08A4BAB3D5E
A2EF6E8656F89058F4A67933AF30E9A16467D563B2782268E2568868F677650A
74F415289CBAC0DECDF828485066AC07C011623DE9643DDE39840B1A739B33ED
3EC705C13DFB191472987059E5017002D278168B5280FA2E26C6D51CA663B384
F5CFF4A6232F5F68E185231EEA239904319E180F91DA98A63B38E16E138D2DCB
CFEFA5F3E5AC6FE764A3A9F3EB622117662AFD26A124933CB1E04AAB53923AF5
D9DD972536C4904A1602040545A9AD4904D867C1D0AB907D733EDC19EC093391
3B0EE96E8578527FD3D1204A25982635CCA01A9B101A843F6C373AC4C8E39E39
BB13AE6A0EA170B59987488481D38806D429E902801F9CE25EEDEB6012CC9EBA
0736820F82C640CD8C7D852D9EFFE6F769D7FDE1DD628861FF628BC0BA8EF127
26F83D7FCE6ED8785DBCE502DD0571A76D88B7FAC1E2DB24DB97394937A1EA17
031078EE07D00B554B9C892C68B624D3900266E8850287243BE44F11F86E95DC
00E89C5C47F573C0A7F1CD0CCD26498334C7D37A3AF4457CA805446A74344597
8D8C3D25FBA2350A878E23DE65D49E9E5F819484DC1B85ED2BDFF923216C101F
D8F411C1443AD7BCF5E90FDD6BD29899C86EB3ECC82832FE75A59EB3FA696F26
96A450E2504A473123A8D24956ABEF5ADAF5B3BB57FFA5364214AC0E9E245CCF
431DFB8A7A5104BD97D5E5104CA9A05774D0FCA9EC0458BD7289794FF19FD00E
2D05086336902514F5CF8141307C037E5D2E30B62D1C8A5A7682BC941A5445D8
A17F5670554AD4AE24EB95524CEBF2599D5D00AEDEE2B5537F869A46BF093296
C77F86ED5658C3DD3AB9C25850624A53F6573A51C7AD9F43EB8320DFA31F7F58
E0FDFA9FF640DB5B55FB5C4E014A8C50E062F13D573C845231F98CDE7414BD44
0AD4CE9E00FB39BC93C3D1C8F5FEC652FC28AD9EF814CD964DEFC5813828B0A3
8AB0E0BE6E3CD60259B8A50F95CB02EB685DDE048D73DB0460985EB16DA749DE
3EE1625182EDC552F104E547D22E62501D9D4EABC09531E6457B7AB148FFBAC7
927318F8BE99EAE5AC9E6AE81081E236187C2D384A92494DE6BD1FDCC5A79413
609F865C6067EB60B83B1E0D49D2CABF88F252377787534037AEA74A842CF21A
5514F3A89A00EEA33793D63040EC2E1231C04026B8DFE67E0E0B460E3BC6E60F
71AB1C05F295F617829255BBBAD68D6D7E5AEE12DAD835A693A661AD9923BB65
C781B9085640D3A5317C312DD3C6159C15D8DAA3A592C9F4B4AB648B160E4B3B
D2E3DD475573570F5EE110AE5BCA3C499513061F202DB76ECBB5316F21F04195
4B9EFF754A628ECC2B68077CD6072C630CB99421BA3D0D1DA24CC09B8D42E8EC
B52EBAA0E16DE13F0F2E235292A0063ED390D9A8E685160134E931F924D150C3
B1E315CCC86F2AC29D02D0D98DEB83DFC7531128E0AB55B5F7D161A44DE01547
38DE065666440E46D94CC4AC21C42F362D222A5CEB4FE9FAC0892ABAA08F3A3A
B76A22CF73E343BADA5C89355A821C67A626C0FA6F8742178B9562543607FA64
8F9FC0971734B99E476E36E9127419F27469DD3BA6A1D82680155B46073D42A8
AAE4A6F8B0B2ED3A99469BCF9EBD004DB631F105D77CDF18A2EDA5801DE620C8
987AF2A7C5BAB3F09769CB0CCA5B1CFA6A01DC0EDDAF693D168F9CD580D7AD66
A2DE7D9CAFBA0562AB6D20C4F2D4F37A3B26398A1D5AD2F84F0E1339008A37D7
6973B67E1EDE40002AA5F65AFD81A00CA4343ACD98CE454DA2E3E3FA4916BCFF
9E4C39B3B73A2BD72D4B83CDC6D0A1C4FA92634DD6A46A860FA2AF035F558C1D
BC60E48CCFD9E1AC3BDDF3FB69A81F2D36111B4BE00DF185FA99BA638F1E44AD
CD03F326227FAD786C4CFCE0ADFD99BDC3BE161F4C1FBA9B854899BDB459D7F9
6B1FBE1D0A38FAEF19E7A659C8D901CDC6CB4742E070AEF8C8631A381CF43B25
05F4B07A94EDF019B4D73211990433184BD68547B3158C0C1806F60800ABCF42
513BBE3A2D24B5C47FF85CB197FC605931DA47421EBCDC3132E27C8653B7D688
31022AB51016BD35A9D20E6FED8073F0AC8279688F65DA0D7C3AE10433C517A7
BDBA283AEF373F8981DB670CF5CBD0627F8B9FA67356F13F4CE0E10E81E43E51
CD7B8B42B8918E15112555A1444DCFA46DD8D89C6936576469F34FF13FFAAC1A
7A3D860A7D21385211840C1FED3A47D18F3D39D2CAAA5337FC5D03297721E204
FBAFEB45F5B21E8361BA30D52CCDCF59223D83B687732D947BF57AFDB6F14F43
22409720A23CA3F0493D9C07EECFEFE21C8B6B694D0C145E30AE91DDA1CDC387
FF0F89169EE3C6156303EC485FB693B0EEE6D47D25B6FF384B9E7DDCB8FEA60D
5D46F43F41DEB70221A21676783AFEDDE0C09DBAEC55A0479325362548CAEFAE
8584BA82097173DEF89F156E500E6E31840EEEAA3A5F7FA7B63A907F77FB1796
469C4AE0D44FD89E75A8C63A95A1FC6B67A2B0DAFECDBBF6B6444361C743E050
B7ED90282B50F86ACEE12B3A35CE14FC19FBC0FB577F7A07FE6D3CF40AF0BAD8
F9432876CDCC8171E705BD7E93151DBE13F80FBAF97BC30049BF622B05E2260E
D626541E24DC1E284E2580F80AFCB5F369A4C26F6F0A3BCE413DC4325F11C32D
DA451403AD08C0E763856F3431010A966D041C71334358B3584DFE8992FAA601
3E6A86216689A9199FE3218B51B8E9326213B5AAE8600FA1FEB72BFDCDADB57E
CAF18F844D84FF577C71054539F84AED4D3160CD02BBCC398C4879E250CCF9CA
170035FBB7AC57AA14C32940937C019163343E849285ECE8D283C893FA30ABCF
2BD457FA99164500A4FF96157F9FB33FF1312C32F7ADB36D465F956962EDB2C3
32BCAAAF2C6359394E1DCC3DB635EFE01C6F9C681A5189E5CC22364AF385AE77
21625A5448DFD5F06376DA24E12D2D7CF4D1E2DCEBC2165498989B84E917F601
0C5F7CF36ECC556B20B0F42502E7CDF3ACCC76E63FBC878FE28895B9824F0D64
0A29AC044FA2FD07ACE6E5590A4F3B78B4D4B5C77A01FE8792984B815FE5A4ED
C9F9D479FBE23838C3948246B876F76531B81942BA18D8385BE7D57F021DA769
6218CE1EA4B001398549BEFFC4449F8328D44A41736A39C591479E1C33CED125
AA1A6A66158C552AAB42A376DF6FAEDB4DABB14D6BF749F5892F9C71B3189FB3
34C96B5EC730AEC5C2632258030775ABFE933B3089886C2F562066B28377699E
EB0C9563B19F4C2EB15D1960899AA7C5DE02183791AC1F82A5CA2E98103DE142
663840CB1834DD40A228E8B2079966F5F4C1B866098C3789D86D31BB0075D484
E0AD40DE834EE1799DD5090266FC8E5975ED6076DD5D7F31297274148DADF085
03BFC5E1D95D30EFD0C51013D7E0401A55F90BA1890E567CE17EC6634AB4146E
6A6B1B43888422297A5ADE8B9FB7E38DCA17C6745C346819C7CB22FF2F4F6B19
B5C9830F34AD8713D22588F186CAB77A32C44FC6DE14BBB11FB9DD87083183E4
2AC15EA11984E8A036B824223EB79C9CF48BE23C03C3F0C64BBAC51920E7B30B
5CC69460649E7D716BE7F2A8D6C26097A74D78AB75AE7CBC5E90DB7349E7A353
113F232F5795A3CDF029836B8E801366046F7D778A3A0A81D1E64484548ED0DA
3B8CD39F9A0AF22EAF09FB2BCCA05D5351D5B824E86AF0B47DEEB4771154FE6D
85AE033113C962607677DF7BB63493B11567C7414178B72DAB5C0E03385450E3
A0A7C4F283752712458208307ADEFEB6EC2ADFBE2A9A1C626C1F0A7BC49E7D3B
BA95218FDA3AFFC86F1D5F2994384F3F71D0519822736399F9EFC18AC1B4545F
AD307441436AD66D262AE97CAC5B9723C2D69B4F4C2642AFD76871B446D54901
534688A8EE34D770C3A4B7A959284B3E426240D79FAAD87DCB83873C0FBFDC0E
3B485F6D2E312ECC7FBD587B4E2B218BA63CB47B1936A85366638E999AEF34A2
47319B545FFDDA215BF59968939259D8F21198CE9ECCBDE6646F97CE85A5421E
29E7A596DFD6ADE9122D7A72147EE9E8127325C87E38EDDB6598D728B3B5F4CB
9846880707073CED9DC3A24BC872401B8060FB5B64979698D036321FDCFD18FC
94D127884CB771A8DE0AAE82127BDDF443A277F551E805C69D091E8D80CFC2D8
20B213C3341AFDBB4B8303C49B0F1A78F24B2B230F2887708896EEB943CCF33E
CEC21382F8135648793C74756447128676F79534C9B1B56216293DBEFD56C098
85204209CE65D6C5FF3A5424F01905734C1E8EE8C8C4BE0A8B15DDCBAD324132
2EE2AC8448F8FDB816D4F906BBCCF55840C0D6F11EE8E18EEC02261C4ED1F34F
B742F9FFAF33372D9BF50C16BE8CA711D141168F39AE27847F144F2D75009DF4
1D10D9258FECB4674C499BC62FE7B47393B9065B011CF24315B49627FBD9C381
C25972873B4B5DBAE8A637709F0A11F6AE5E6D7F5AEA2DC9CB2B29DF95CAC8E8
3D957BD9897CB519CCE68C5D8E975A41DF10DFB5AED3634B4E937D1F5BF7A1E3
B5CFB6A3A825CCD938ABA8123ADD9A9F2ACEBB08D6E43347F4476E6E21E91729
E3B49559022BD82ED0A6EC757891C5ADCF3B7252BAC6B8F3E4592F73ED0A15F9
ED1AC542EFA6D627E8CC49EF560346347B43A5433E9170B58A495FF364E9017D
9B5DB6097D0CEE11E195C77329658DA0FCCA02AEA5D17551F8C9F1BCFDB67669
62028AD6DFEB815871E62DCAC4C8CDEABE83D43DB2132F5726E871FF48E78882
1135887B8C8C913CF6DC16BACE2C98013611BF80CFC4609708BEA6250188C918
400682C7AB1B63130B043DF0024025B42049B70BA9DC13ADFD45847C105CC2B7
98E5F525475439ECF6D19AA53F22CE692C0533AA9CB1EB45084B2C18B5FA0973
EBB70C740C01A3F0B7FA898E66FCA39D721A36EEBCDBD181930B6C6CB96E4165
CFE641C851FEFB65C575E66CD1D124236FF92E6CE92AE13E3F2301032C0FCDE9
1380927D65C3EDFADB2518C80370699CB078F9AC1BCC58AEF7BA8ADD7DB026AD
8EA97131D67E4AC09B1DF6CE86D33F3089BCF18ECB13199345BADF5169929E71
335F70AD28AA1F33389E4483E9ACB7E4843A17D65967B18C02FAFC9C0D6F1E6A
10254698BE7BE384A5B09D8791D661D7CA06F5C452E699F8EA893BDD056611A9
2B87642083E34A1E6847DB9B77B3D688A11526FA64ACE292BCA5902914FFE1F3
713E359253637BEE138B4DC01EA4006F2D805E108811C580B0B7E22FBA4D88C3
3C226BB0F8411E3417A70E2CF15CA78CCF1D237A2D92763EC126F6E98764EF77
0D260E006916F462DBEFAC643D52007E695439989C15B5DB4670417E8C3E93B0
D4D0EE32DAB212014ACF9D861741FA71857DFA0306ABBF2C9DF17E1E377EFE5D
0D74CA928343EAF4B8B9AF6594D4BA0329CBC2AC2753313FFB00271AA7F4E646
4353A384F5F5DADEA564DCAC584856C894DD7EB377E1450D6B47E06F49ED0858
21223FD31DC613E8AEB5DB03C10C6FE5183AB565FA114FB4A307594B4DA12E94
7380C85703CA7D55A045E5CDA9A72721834ADC93DE6F3EFA188174476F397539
80D0FD72FBD9945DDFDBAE9B19850508E264609400A5D16E8BF405515F15F587
C147E23D0D00A8492E64CB93B624D12EA946ACC6CBABD6339C5B78237FFFD0C9
F5741BE8DD4237206D51D126324748E7622F648FF96CC4CB5E037C4EDF108816
10475072CA2B3AA2039F2EEF8DD6F7F7400B5E85FEA7C81748DCD4BE44113FAD
9C249FA5CD87A6511E50FD159F0D3CC98B97E81EFD7DB09DBEEF621CF081CD4A
3CCEAF8E58B9BC3F88F1A3F80B64D707FBC523409435
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR7
%!PS-AdobeFont-1.0: CMR7 003.002
%%Title: CMR7
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR7.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR7 known{/CMR7 findfont dup/UniqueID known{dup
/UniqueID get 5000790 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR7 def
/FontBBox {-27 -250 1122 750 }readonly def
/UniqueID 5000790 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR7.) readonly def
/FullName (CMR7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 57 /nine put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB981ABA2ACC9A23A5
3E152596AF52983541F86D859FC064A0E3D5FC6647C3CAB83AD4F31DDA35019C
CDB9E3DD3FEBD4C2B36BA3CF6E6C7DA85E25D8A31A9BAD39BDF31FD0D1790707
9DE6A078E8A409D8295F642DF492AC4F86AC84383B0F4C6BAA7C22AD5A898A71
D6CB34D2CD12266C486B75E75A69C14819DD9BB8159088E04D4717E576B8482D
BDA52110AC8B8A80E4E9D58F470EEBD3CF44A1E1EE8DA318FFF3611B02534FC9
F4018C7C57E80570D2F634D98BE5D5EC6D95051157F0EA94A3D12BE0B4B79939
F82F8D73136D3337C44E314B0B16CB030D9A12E01FB667105F334C3EE965E5A3
D410D2F1531547A4497C355AEEB295CD3C5334BEE5232992960B757594B89F3E
52095042DBE6B4DA3C3AD50CA95EA9EBADA10630B500CF1FCCA7D60306743681
7E428D33B7F7C40B425CD58E4CD8AB474BCE6A307BC6C6EBC15A8A96E0E2977E
A33389154536F5C5D8CF036D07F24094E779E5ACBE5502C92892F10F4C6DB627
C7EC4C7BF20B39418A8A85D7FD9B0EAAFD871DDD41F93BDE5FE619AFB8711824
DE890E62C1969A6FE28DD3578AF43D58A728FAFF0B9FAA640962C8F35A26F76C
67F3548D6DB54A25CEB368B47F97EA2B0C4D7C0E7894A4F0C823C6C1922CF9DC
10E05600556F1C7C9AFB33A2DB6F8730F70D6BF94B1FB0887451F2FFEEF3584F
DFADCFA9A2D4846B8F0E51620E1327D994CDF973B837D10C90FF76DE22B47CD5
EE3183898D156861AB4DFAD34A1E3FA260B8164E6680BF58413A553E88F6100B
C4F4E8E972C81A5F88A7DBCDC308B4C3581BCDE13877B976B1F84330839FE5CF
C78551620EB803DF94A5C921F8EE24F7EF8FC4C3E1653514212631F54F90E3DC
E9EAF96E998F340C4F729ECF7AB430FDB7C0BE3DF2C0D23015820E28B743CAD7
7F0AE95413C3EEABBC69E852F53EE1DC260D7F1E712BECEF2F18437DB23D8E74
2902AAFBC733AC5BAA452DD6F3671859AD836C8564E99CDC4183D8495AFD99D6
1F0D65B6588CE7546717911E25BDCA6C2649E3A7466A3E2DA7C7994A30AB4449
672EFD00632EFA8629C1AFB7D53D801028F77C864869FE636213A69173003EA6
BE1ABA95EB07B13D1594BEFCC95ECB0A9CFA9892EE0677D6B6C250855762B7A7
8E4E022640F93169DFA0303A0D5E73BF3E0F4D4AAD10FD7E4EB20532BA30371F
E9F480F9513432946F9828AFB5D4AEAFA5829B2CB544E5EB634C4537EF7DF08A
A1CFD94A52DCF0E7CE4C5EFFB01E6D50558B75DB4C8D5512B06080F27BE62E01
2EEA6A0357441401458C842D3DD4C35B8F561D816B336216CE0C14BF77648AF5
E33912CF95872A1E1AB9A18980A0B29A881D13397C15E1CBA5D3E0B27943EBE2
F3003D15EB446BCFC1C231832475D5B7AA19E4CFDE119D6CD62D053C6D29C333
5F729791D17B3F7108074EEF4D1BD101CB33E01004532CB0D716D2E54D169C6E
80163E70C0E9081F31A1ECBAE079D2A518B790B0CB2CD03DFD034A0F4788E800
B0CD2DC1FAFDD487C2F381EBAB2A2F3F3AF82021B211DC9CD2FBA6A1BB3D4AEA
4C7F3D9A5C21DFF284CCB827D205A69638E98D5DD8E36AFC1A4481B5CB2A2E8F
D6C838DA6F81990F5ED928DC7457501B5C979FF4CD20A830896A460C5DB13D56
A3B2B5D9B292374A9BF392894DD99FCD6A1E655AB395E839F074D1596488700C
4E2891C8AEEF66568E82A8B826F9A28FF84D4D9BDA21F638EAF96880B4EBE0D8
081982F34831A03BEE81FC177700C2360D2A48915EC40D5FE85B400E175D5AF1
067FA0097904FB647757BB44B4042D30D1557BD0F7922D731142FD682139CEB7
58CA4C8C240A0B86B1888CACC507E24E04020BF1882BD9B4CAECFA97DB24D7F5
AD64C69454027F198BA35881B94EE9159A2D73E450C3BDAED66B886D6DEBC84B
653E165176228F88993F12A170775A8D7038BDF2FE8DC1F7B98BDC02D1E6686E
9B834F6C0AD90780B17DFE25F0A4E470CBA84E73F2D22BEE09A040F14CFA2C14
0FDA5A5149B5FAFFE49F55EEFC43831BC43A8326FEE9C7F469C0FC3B000884FA
41DA7318EB57262CB96FC4EC7F16CA07FE1C3BE8C2DBC8A8135953D6DDF20BDF
75A2B6D26074FCE752BD32FB9F5CA797775E8DB9BB9786B469A3CD65A0D9DDDA
C2A166E454A94860EEF5B5C12172DDFC576A03F6E6F8A735FF21A3E9CCB4CAA1
3064893487697986A42CB5888B2B0A79FA3C74E8187BDDF7BEAB884B70B8D4AA
AC6615745AEB906E08BF831CFDE222F58D02B428D55E9D5A3CDE74E42D8A2CB7
E1A3A9439B678AD438793ABBEB72B21C58981DAF3EDCE4BB93D95F4A1E943BBC
B3A012DE92FED4F232A3A7D60CE60B605151F9C7C18A5C653E5D6D15E5B49A63
73E7A339504D0ACC74B8B116EA88C3EBA2CC631AAB29F761E5F062966AD2FD28
7FFE52FA8A115DBE23E471094FFB3CBAFBDF11B7E9058313F2D069B2CE98A962
64645738F02A31E2F2AC11628724034ADBCEE012721EBF0A567893411F950410
B20754A7510D041FFA6144AC9CC46D846B82581F20BBD001D34D9764010824BE
61C30D05E5C5D100A24F1917F01799CF5BC4E50FCECFEA732CB50196825F0E08
8A1EC868C6D4357857EE2957E081A0E4372E31A8ABEF23C3F2EA0FEE57DE4D08
61C570175C41AA0C7A3A579ADF593F18B4AE3782D2552E4E0759C32E059EE741
2D8191E381731769F6648B3581CAF11DAE46471896666F18F02918B0860BDA3C
BD5DE777672447C23C62ACFC2611ED5239D6A266FDA6031EBC5A530C1A2FF7A6
B4380B9A4C877267854AD1F1677CB5433F28894ADF93D39EAB94541A8D232E08
22D082D0951A60F62B87DC028714EC74133A4D65F7D0D1296C0E189C4A42AA98
28E8AE7ECBB9FC8DFABCC6EEB1E9FB06227F90808EF31331CCC5D4C9A6182181
047902DC9FD0444FB94B60FC74F3B677758088CE6A159D940C5CF682335E756A
8BACF06AD7225D49B0002392C889B0FE2C71311D2596F4903D12FA20BA2FFE25
A0804B4BC282929BE31E0F46B34532CB5795A65218CFAE21F390792DA67775C7
B91A2BF4C16DE4F6551DAE3A5827F616BE9040EE6B1008DA2F99A01EF66D697A
6CD1A44E0A15D1F39EA8025E886A68A1E9C334327C7703EE721E497CA924AC90
7723106D913C5ED4BA4FC743CEA8D0F5172526107DA65775C0B1B77179D336C2
9B09B608D80B1A1E87CA1A84A833A00D980D919BFF56F6390E9D5B45E9935CF5
E69D003564462F750F7DCE02DC23CC215A0696B74D8BD3156A392A94F557655E
00BFAA035647568ED66157FACC585E411F7F428569C147DC43F6E4FDE693D0F3
9917BEFEDF61FB980B85515FF6424824E2D995B05CA1E5D3E8BD8D3281DB7CE4
E54923E84058FFC0A8A2C491327D0F87CE4C352B724167CEE224DABA3B95757E
4A419594BE4F92E78BA6D35D4C93D31ECC3134B24A45DC32445725BB044F09A3
AA8C31EFC0A2944ACE2F2CE054CF24DB350FB3C71115518C24BDC0F7E54250AF
9D3378D38480E1CB9029F31570C619A28F065CA4FED5665EDB96712ABEB33B9B
4232C00C1B0215F08D53F7E430887035AC25BEAF06942FD1B6C442253C887AB7
D694C1A6115C8990B4CAF1E81DD1FDDD6B03C00055BE956BE7FD8A4E1049AE69
EDA8593CBA8C4A41E046C689FBBF9F1B64E5856A7FB1C61EC815A56DE2A8ED33
41F370B8203D4E5B19C63AE9E6E0D26F4F3814B5AF48AD30EC9B8402C941FDD9
722FCAFC638FBB835F83DC77F93D367266FA7DFFFCB567EF82B1695AB4D94D09
B18AC041811027229DF431F5CB2BBF6ACCE9D500C8F075A74590641C1A607C56
D2B8624797BCD9C91C3177818691FBB4744EDB6056464A0B95B8D63F7C22309B
82D6126E2057BCC9FE5566D96B7A9B201A09B0D3252A5494C8CA2C8BA8A13C29
37EF2A882D61DA708C279F663D88A8E2999A0F3B6F98C49901A7631BF7708B67
54D0B4C52BF4BE0DA0439E6763A7C9D639AD4092E77B13D3510DAE1475C978AC
796F9B2AAD3BFF35C5A3E19B5E2BF704B3BBDF68CE48BA4FA2496D60E58888EA
28AE12D00E9F0816FAC190590A865BB58569A91BF0345D01230ABA361442006D
BA2C90EC2036BBAB79EBAFC3F217DBD5854C519235F9627A1C3C71D21ED38AEF
0BB40F3B86BB9F09A3F309473D8757AB7E638DC1C59A7F9BCD49DE4107A2E54F
422767FB94048987847205584309397F554744690ACFFDF5902FE5DB355930B8
71863217830DD7A563B0B3A4025ACE75B0E777B4414B62A13B50C54E0E6D47E9
D43BF769B9411B74E1069BF71BA873B4B8973EC9BA492A5DEA58D267872BB246
10AA67B143D0E2223FFB4991E583E629413CC894C3FA4869B72D19CE1A0CEC8C
0FF5E5A3EC1FCB7D3C4289813F0D249A11B55104BD60B2A89BEF44CC77CCDA9A
065B8B83B4F4253AA1D535290DCFAA4773452D110D2B3370F9E2FE5432B54A9E
644EB3BA9BFF62347F376839024CD5EF3C5DFD30F412DD5474B7933E6A1AB63B
4B12F2417C72D0543C26A263AEA53E5BAEBD67E23553A72E949DEC556BEB5D09
C4D7A89B14FE4EC68D0E3E9D65A64B285E53590F418EDA8175113CA375A29930
DDCF4C71ABB26CEB800C2C2B253AC1F53651C88A56ABE5A74F3B54CB4FFDDB92
60AD7272BA25EC2F6FB759AA6E1E7964FB55AD09F4EB25DE45FD01833947BD05
6266AA8ABB7DD792941C7A070FCF3A4636FBF8921C70298D42FE92F079DBA2AD
6149D9CF9EF7264DE6DFCD4429949B15EA90B596340713BD61926DDB2BB23BE8
F9DE38A31620A817420A245946E551463960A8C5C7295E3B3D6A59BCDF5E472A
40B7A2CDDAA43CD8AAFC411D037142579D11054A903E102DF0D0C7B5BB854DBA
F3F086AF991F7F5D5C730F8F9AF213F25786F3EC0E54530FF912F4876FDE16B6
A07D0DC4FC46EC6363BCB68B83ACC448B801EC43FDD2F8BE0E93D809FF81E38E
176AE17C67C85FEA58EC95435434C49A950AA955D8B20989C550AB1F1C31B7FF
99422E1F48FB7D6F327C6DBC4695A03903DB275B94CB39386E46579271870A25
21823E75C377E9D5B46655E8CD8F986372CF8BA846423E26582315A9D19E0BF5
305C32B2A0EAC3ECB275B1D8BE11A37ADF524944219D94EA2C5DBDA768828B6D
775DA8CDB09E0570E4ADDF462EFD8D3FA3F86B1DEECDFFB699AF6507257C1879
16FC615868C2D51F03CD57BA38D42995D9164B257441210084DC409B6EE4C119
0B2E17B0A8D5326DD0010E4A325D5F77BF935693BC90A00A28C7B5F74817DA39
F47A41E32F4F92AA04D30D810F7B1484EB53AD8CFC8CE8928B570314E0F713F8
AF127227190F9C16BB73D2A217FF801C391A29095DA5E4974D137A0CAA7DE702
E20DD4755B1D78739756A5E7EC3542B96AD6844199FFA2F5F2E9C64E2DA4FB2A
ED79869F745C59D235438251BC2E6D26112AAED20E06021D1AB896EE1F1DD2EB
437FBD4A25E42245C5A647493FCC9922E6DD7AF57D5D482921D1CBD6F0F02949
C27777144751C1E72F4EE2BC343D4AE7A8A8758123B54FB1A026144C643651EF
0907A376945E19A8FC7F98A034832A5820A481B0823F980F59623E0511593FEA
BDE6EFBCC0383242CBD4954027B075B21F10472059A480D6E5ED01C3B07461CE
9810251A5C5643EC7403130C2246E8616CEA25EAC7A0076731FEA8CC43BCE3BE
933FCE61067F5FD402E67E2B9DAD954AA77C5BC86BC5E4BCE2ED676D8D8EC7D0
ABC5C86D82180B9D5D7451C71B5149B6B67883578DE9909317928C0A92E3205E
F23015400A1763A6FBF67FDE3318AD2696685A1832FC31CF38589EBC7CA1C818
60D2B2211E04EFCCEA88D9A9082E82951EEB123924A267CB03C48889032F2892
4227E217FA28F87E01CBF27BF1EA60641A4238258CB7AA355908FE36D90F5CAD
FE992D03A33E47CA9AEBEFDA57793F39DC6A9E85D5B289F6B862B35DBCF82E43
5CD6A862F6FFAC36478C384C3BDB0148CB1FEDF55969C776E77917635B5A65EB
F2AD351D21CD3822D43289FE8EB0FED58182997097C7E9F4373553AE1CA92083
EDE3BBE6C3BC7009D15AB5FEC6A59E9FD1BCC7B2099CA15FEF083B9CBF7B890E
CDDDE6BA0AFF306C76500C945DC91BD533FF9A585CEEDEF79238C54E6168001E
26FEB29E523EE501BFA4F60B782B1499B07084C35A2434B4D29D3D8E2C8F945F
A9922443B68D07DF7EAA1F4CDEFFC438B597D8943E231B5216808A85F30EDC81
9DF5DD22F54A45335B4C2203887475F39D247F0E7347BACFEAF220ED82F9263A
6488E73C1910023E505FDEB143006C1A351D441AC57F9D52D2C6D63D78C75605
999885676BBBAD56074298E0BFDACBA1830BA58E87F436CC670EE8EB1870154D
72DDBBF3794F8CAAA3F1E11DE29752DD99EAC695838A19BB67A1FA3829B6E0BC
5301610A0351AAA749F456AE31ADD87D6ABADCDD1FB3CE81C3713F48780DF407
530CB284B2AC709F52EE7AD647DEF9FA4D2A867CCEF728F3D40CF34C28D21527
10160B3DAFB5FE16AFC9D36C6EC4021FC189005862082BEA60AC72B63AD27D72
FAF3C2D89DA2648FC4C65104A069212D87144E8533CD86A6D73DC7CD9DBA25CE
7DA53B000266F3871B24663C77723703315C5E4A89DFCDBAB384AE7EB2F455AE
AB191FED406F7F6EC9E5B8276EF5C4CBA041AC7E8BCEC7CAE840154BDCA3232F
15711ABD1E867A434E9787CA0A6D1F197597DA27ED2402CB2D84ED082E8D3A39
81E6EB270DCA4E7A90E2BEBD3CBB3A2BE3CAB926192D7292CC16845B6399A543
BCFD224BB52F21352732DB5154FA3442733066CDC3E186D8AA97CD801DFBE43A
116C86889BE198DA88CA978B8C40ACB67E8F7BA499DE68A6FF0DC72C3D00BA1A
B378B39610F15CA026F95ED8155CE3FFFFA2E2FEB352DBE14CEE1669F2387B70
55B91185FBBED764266215D518716EDA3DFC9E5DB6B148A553E75AE5E38E1CFC
6EF47B314D54CF24BC13856F4F7C976BB91D143DE32FF49BFFC87E17885A1893
BA1B8E441B08EFC04F7D103C1FFBB665194B3D0920473740C55FB1C50EBCF717
A2359B687FCEAD65616EE89A68F8D91AFACAA0B238EE4AF0279AF5BE5294C3DE
A7E1F5E6248C0210E7D40683F04B12A933C746ECB517CF94BBCC6E4CF49AC715
D8005AFECBDFB7A6B417DB8A28F8E9EAF39CEC1CA64DF37A5E66A76C26F721F8
A63B003A040A62F87DCF61B298F960D510BEFA453F118E59E7DE8CA3DD002EF0
127EAF733D5C61B5132348D280F84D159809CC71A3C6F7373BBFD8D6EF715D34
0016DEFF14AA5F960BF1BB9AC304A1823722843547BB4CA5EA4C41C6C2701C8F
7BDC810443F9DF34BA469A3260009B799871BAF8523C8763544DCD0B382D44C5
F75046AFF85F0B5A3188C2EE786CEEE5496A5AF4BCB0B429CAFC403FB983EFE3
61FD9F52ADFC38E07A0FD7BACBA530D2E4DAB2592AA9564843E7E2305047F060
C5FE4243FA8FDF1B5D4F61ACA7850A604FBC6D6970959752695C90F78961B4E2
C8CFA41082B1A37405AABCEE5BA3DC2B9EA76F486117B84728EC6D8AE6379CCB
402C2AA89078EC992C00D53151E9D82C65643F549A572A20F05107A41BE5AC57
8EDE92AE20B05E2D0C98151CC92D5389A675DFE39DF546A33A84A4C534337ADE
B17C34E09145B37CE1EB1D10D42CC8D6E6B127A3809F7202381FDB88D42084CD
0AEAEB8A8288CB56870EA2BE9D0B9DC8291021CA561E2BA388DA3494E433E0EE
5E69DA51D0AC505C9F71562D3E9750F23CF14D2C8ECF0692FBBCB4A92B48B4B0
AA2163AE57C48BDE42D6C1556A37A4B44D30569AA0A3312CEEF1C35327E7A92E
F2EE4E7B73DDA96096EE36242AA37D24D75CB4021C96454F56D22E46253CC398
56C914E2246893FC1F6DEE943B9E5CFC3FDF89BEFD26498437082246038C4A94
606A5D1A9FAF6A14ADE5CAA159FDEABA0AD7417E7F6B7F5DE3F181CDA0D7E922
BEBA86F38F87ABCC697A80102EF2E0D4370D8B40B16153E4EFDBA916058CBB14
E78DF01395AD8F8C1BCC43BAB10443E92F1DDBFED3D78F8919F275722AF44C4C
1FDC54DE5CBF0EDA5CD019A73B7944352D5C77B7BD8EF73C7EFAEA8177D2E130
3596538E5EF700FFA48021A3306256792C605C6BE3DE0400B03EFF300C4C7131
6CE7109D902BBAE513B3E7C2384C8FB8B7E7949C8C87DC321EC1E5179A8A5ADD
17220ABB9A29DFE73268A6D2AA7DB90E58900719A8F373E9786C68EBF778F15B
23414D4490C3869A937DCD1EDA923464C470E1FA47143619DDE30013C94378D9
AE058333CCF18ECCB0C5CA9C2DEFB009ED964FC74C23F1C225251F318FF7C437
AB9369ED158F27ADD340F46C2A61DBDB81DB18072C7E619A87D96273C5E862A5
243CC499B0F25D39F5DF2813A66CBF86741FD5F04A1813295F90673F962727A7
5409E10232B130DF2B2E4250F5CA8C6ABC1BBB23B551617D650FD5FCEA0F042A
9A653949F11C130F8E2BBC05710974B6D65AB5DEC945236A275BFA6B06F485A7
3049CAE21E5489663DD6ACAC6B1EF2031E090B88C2BC1A028243BD18F0777FA9
B33C2AEFFF9B927EC8AAB02048F55F01F8D8FB872D245CB77CFDD06AC3577640
3847BBCD503E53D00915427733F3660C008CBF438EC4841C3393229057C215ED
E538B1AD0673E35C2EF373F51A7ED73119A8B34A432C81275FDCA4011808FF1E
B140B83446055380E76ABE87B389E2230D3E10C30FD1D487A9670A3A159D7421
ECA9FBD7545A372CA1CCA2190EAE953CE35BEA9042E5934507EFAB0DEF58747A
C76F4F2BAFBD3BB26C520A23A46DF056833EBA022A3230F9CE7E3ADAC1413182
4AD2DB70CF9CBE7A0BE3C91495AF6CDB93D9BD6DD821BA6FEF1E7A72142B3FBE
843A6CFB1AA7BAEBB907B4466DA322E4D68104BD5B8BCBE311E8F9E8616743F3
DC8EF12E44B019922D34D0FF190B5BF687DD30E1E4B730DE8D4E29B3057E5644
79560663C959F1AFE5BDA9936166601B9D088BE39CC40F08A608EEE648CCE6C3
28FBD3E33592E4661291BA797DCA097E4887DE5FA71DE5C36B323F0D5163AE7F
E3601E7A1AE46D27BF0DC403ECE24F96F3C9C3CE4206F9DD85892F14569E95B6
1EFFE060406EF1B48EF3013229436D7579F95CB95AC556D589ABFA7661FDA82A
05256621452F9137FEC0CF457DFB2769E433423E593B190A65C951BEA08D30DB
04305AD0792C79076798C704AC6946D934C0A47B9279EA4094E5FC0BED69DB56
ABEDD6625C61442D7AE39E8C7CE731AE5D1C4516E1D5DFC45C1286CAF836276C
022217A7C5B9FD122636B7A6F6BD582212384266655939C4FD3282DCCCEEEBD8
4B64634087B12515034B52A8ECBD65BA71273E377194DD72021EDBA839B4394D
9121B120DDD98FEC3FA1AEAED8CC0598F7CA6CE26909F49C22D5EC49A05F7720
C82C2263D63057EA8AFCFC562DFA109E5443B69965D36398736E7B82CD686A2D
28563BFEB0DA4BB7184F41E39C88713F273CCEDB856154F664EEE7E6762631D9
947E8A96AB7EF5F19D0BF966ADC4813F8BFB4437A8D5FA6928F85AA59CB2DEAC
913522DCE54194A909F5892B4FE88555F97B8CBE666C39923DED37A8BBC62081
39E959481B4CDD03FE21FA0A8F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMBX10
%!PS-AdobeFont-1.0: CMBX10 003.002
%%Title: CMBX10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup
/UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMBX10 def
/FontBBox {-56 -250 1164 750 }readonly def
/UniqueID 5000768 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX10.) readonly def
/FullName (CMBX10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 39 /quoteright put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 73 /I put
dup 74 /J put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 123 /endash put
dup 124 /emdash put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43B233BABF23DF8DB
B6C2BD2F04672F9A3B7FE430263E962F16A948319C51B8ADE6E8A80D3D88023A
6DEA4D271676C2C8615C4A0EA7DC8F6601610F398673A4D4B905F49EA868FEF6
39BE073001A36DEA6C08ED51452F062B971740019692E221F4455EDE46AF24B8
407A98B791F6AD525C72C09776247E194043281D04FE1CD1D8AD8DCEEC3045B4
F95B3B41CD3300768D8A049815348BD7AC1004F5500817E3A267D694AE108BAF
285B288FC5F28A03E9D34FE5D9B2F9A9BB26ADE66B1CF8EB5BE606E83D213C33
DE083C20D636EF780E761944FCE3B8A950B1E6E7568F33B557C6D59E0CEAF185
53E609A4F58AC4D5269116F958C4D115C44B5A6DABAB79D3BB6E60BDFCECE108
74CFBE258779F32C80CD7D9A7CEBA50A0966BD9961F71560119668C4A0C30A5D
ED91ACB30940502B24F33906D6E0F16F81DA87EB6D7FC8B7853BE388C40D75C2
2CA8F94713AAA1561F5321CE97997CB4AF0E37F44E25B0F73CF4986422B1CD89
8F861CA623004ADB1C28268D7F8C484AA10C9519B6AEADC95AFAA3304D60E85D
718B2F67D2B734095E5A92C90785252C98067DC05137BE735220BBCB7C341D61
C4B98BFB1EAF883D38D7A93195A059EF82B42027F23B6CD633231D704B891A9B
03D11A646F13898F20321D7BC150C63FD6DC6BF9CAFD8DA759E95384B729A0B2
767B9F3E55C682F7A248BC1184F7D294CFFAE0B246DFCC8F215625DDD4F49F09
FA8D41CBF4A06152FEB152C61539ADF7E70A4D23AF8267D25CE3B12D39D62377
547E2528D18DC4134FA3BE0437EE0B3509223D71F06D44C6227D62BD01AC0A2A
3EDA975E894371C07CA1027B102549A7D552FFD25ED2DCC68E29E71BBAB43C62
57B0BFC6A953ABC2EF703F35D112F6B5460018CDCEAD17F149DBE5B52C2B9E10
9818EA6D97C8AC884F6841C9B600A7D868F59C1D80E98DE0741D06D69858EC84
1B33C6C9938B7E8A6FF6C12AD456EECBD3EBAF0D7331536B9F6422019FAFFFA4
822E79D6D89D6366DA636CB708894FEF904F366E295F1CB808E78E883913C4FB
1631248ED6A7CF1095C0C61C4F05E4B9DFC47533A5FD24540AD71A0E2907B98B
28085EB88ABFC3478C9644594C7DC4244ED5A7C1CA8D960B65497D56D174645A
B88F12C2CF0A807DA314017984CF3C4FB7F47392A651EB9CFA961B28E2989893
9FC4D97171BD5338673F5D1CE2C3C08D48A1B77769F01D5058236C655FFD864B
80E28F900191D4EB349AA5E400A7B0A0FCA0F3E79D7A7C69775BF754329397B7
D18B20B2683CBC4A19729BA878B3C17EBA0A7E9EE297A5B67E915CAD92C8F356
582B8299DE6A58E73408F525F7EA895C48A8F0D626A06A96A50348DFBE479D89
4272576FBB0CD332193D28A8F11503BAE98F8E1D73CF5BCADF23DCD4E6586ABB
323568F5A34E359661074D50CD8D9DF27191FCE24F10225A5D721EFDE2547E1D
CA998077D2340B1A4ADFFF570AA677CDF3305D5E3A394BB1626EB35074D4EEAC
2F037CA2EA389F7683FD17A8E07C12B4CB3BA8C249C9B12D297C618009F76717
0EBF5F2DD39A6BDA10A2E5A811D4E190660F5FDDBA29201B6F8042620397AB2C
E59267A7247B0463891831A6F40582BC3F614E5167B646A8F53D8A31717DD9A1
9034034E705BA7884F0E0738307AF69D3517147C282747F2788462FDC4336A4F
9CD222908401A25F0A1F7B13B8DAE622DC965AD0BE62497420B70C04AF432237
E0FDD043456187658ED93B0F9822A3998511DF05E59CC85B7B9992CA0CE3B814
9723BAE70D2631F32B4BF93511F67179FFAD2075E1591CA5907A4C67701B56CF
A5E5B02EB4A842BA1F18D6864E5677359C2FB4AF5BCBABAFB053F230CC129B45
8D15413F736EB07C571521C7DE2A13F2AC1C133D491B0A607197BE9AA1231D96
BED7968788246B2E4D2BD330F802810F5BDA3760FEA5210CFC6F54748FB1D921
5CC3624BBA5B8962AA7D94159651589540B17CF7A785F297264F9C1006D36928
6E2756D3B623A6087E4B106FBA76255903C624C07E18A1AF4E185A533C640711
86BB477A906ADD36EB6C8F4A12BC2F01B2B98412E4E105977640930CD998D990
0254A1E5E9843B7A8ADE0AF6D5871E6D3D666465AE69813A2E26333213FF6713
6F08D55A90C079A56E1B9AC655F720FC22B5AD8550FFF26DA7B0C5A0B60DDB05
64E8FAF684F3A455BA9BC9278043D79537D201D520E38750335A4C8FEA887377
879331B68DAD6B253F4FF9981D0F9B9550ED5179B15EEEB00E560A3DB6E5973B
63403E4E2F40A3D0B937246E9652000B917B1369741E0F913C14C2D2D6D1FCBE
2CEC4422177C58523715BD070002EC2E13D383A1DC8C84228862B6C5D3B65667
9FA97E175239BB7FE7E37E14B96DD7960A8AD49DF428CFC13B5D3CC22E245317
47B5244DA97F1DF954CED2D552477237CB23D037C0DE728E26C82738954EEA1F
F34FE497DA005AF03746DD2ACF77F6E6F2C224862A1D18AF6F7A5DAF34564387
9E01DBFF49F8621C058C04C2B3F4F3033FF3E8A977B2CD6B2A3CA4A6C569B19F
C5AC457AE9AF334DA66A730960C7565E93A2D373C0E3DE14646FFDA05DF4C6EB
6D4CA8ACCA3C3115764F77B842581760BFB9E5C0EBE55308B0577A8F4D968CE2
BA3361D79378D451DD150C34D7E901397AC63B33BD7DB13C50D678F5DE999238
4B4EA15BD449C46F262D931478F5685CDEEC4C4201FC3EFA607AFB8F27AF6751
125DE42D2FE2D31DE769B7E7FD8CC8C5D91343B537139A822A5BC4160BB5314E
37501F65B4FC35475FE9E03E34CBF6795AE86CE409500BD0799DE39FA69978B6
EC74D2197C03632D3F59B85F404DB31240968FA75059B2581B101E028CDECC2E
7E5E25DFA106E9B8ADB81E82BE9ED3BAA9D03EEB22B7B67AB1262DF6AF5F5EFD
A5627EFEB84F3A5F92EF2557EDA2843D7D18C592635623CEAB14CC3620F33986
410D6DBAEF9F86E4E6682054540E2B01D8FF2161F10E66851A188BC15BD6666E
8D3F21709F196A31EE676D28A2D12639CC2E7020A52910F052E61A0710DF09B0
064171D05611451BD24FAD64716F141E1C41D3218A8115A3D73CA041D02B46D9
28C3D07DF0FB668E8E91409C8D0A26A65CD737C075E026AC0A974C9BE658199B
3B9D82ED95E4646977D8F60717DA4C68767DBD7E8320D5AA1D5DEB2E6B009759
8282F27D64F1F904830AAB501CDA4D9233FC2F12F77F0FBCC46E6B729C71F6D5
E6F3EA02EC35D1048394F4EF2177FC5EB726DE5EF2DE7997166B8BE5B5105D08
EAAC3481FC612665CA112D3F889A0E5B7843EFFCEFACA24A01B6AC2B7DDE02F4
A9295AA2409A3756BAAB44608DACBB56840060037869455BEBA46F10AFC68DD0
0563843DF111C6D34911CF13AA6023E5E899060B5EC60D0F78FDEF3E981151A9
24903EB13ED1A67EA1977449716D1A5A7EDE1A2E9465C9C2B20A58AF02D9F373
73E627CBF296B3A6A4670C39F3B5EA30D76F0362C81020A1777F0ADDBC6B52F7
213FEE1718214087837049CF2AF00407639657428B9E8B532F68B631611A3501
3D9DCA38090E227BD0D6D0FB4130EE866DB6B195C873AFD18DDB3B1E40F740C6
B3B375ADCBBF628A07A5FACED539FEDA3379D3B60216C2EA6629BE2F65199D82
FE3AE627D7C67270F3497AE75F7A9514968B5950E2D63C38DA240AF4E6CAE88E
E25167D179108679876E7C80C85FE1D2BCC2EC9B88BE76A8F5736E8E6B3A9CF9
42E58A4ECB7914865E67C1468CF66D658206830B9380FE346DC2DC4BB56A92CE
4B5E4EA9036C177869315A2D9E6CFE97E3BFD7CBE0747D40CE5E8A3A0988576B
8AD2B1E4314C0D8A0CBCA08844A49F7E054D31BA7543730C0A7390BC4A288D10
CE29E389A4791305D3AC1BB6F77C805F1032787306F78FF76A20A9E629899F6D
13356768D33D7B9E294E8CD50CBFB9CA02A193922BD9B4372C912D1689B6644D
52CAA30F7421E8114D077288119AD9514EF21E5B9989CCE2ABA0C12549FDF493
FFB39736AC9EB72DAF45E4EA6057527FA9F5AA0A1A3F03C12F7482E465C766D3
760DA7714D56C91BDAED507A5572BEB51A895F8DD3BD5AAB042650154FC7E4E5
5EEA6194DF73AC5EE2CBD4EE26E29B1D2D0C458B4850BFE842DDF2EBB4E2A25D
C6A11CA2D8F346E2B736DF88A3D57BC0380B52396A6C039212699F5D3342EB58
0C3DD5D01D5078479BD9FD10C07925556C0AB0F03606F33796BA72074549EDA6
E33644F62CA35207D7421D2727AD8419AD1772789D33405FCDDC9286BC34C974
A52297F5BBD2E541E8BB473F733AE5097BBC9D5FACF18DE4173B4711E28B23ED
16E0A6746A60F6FF903026A3900169EDA87D98396E762C2EC963D89197B8CD0C
25244806BE7CBF46BE60A8F9171731EADFC969C28679B025371E5572E52A0EF8
B3FD9B4638D03E20BFDEC9345E70B8166D38846DCA68E0D0B4B53629C7E7620B
45E0A610BCD07FEF8814CF915CFB11119F42407D1C6DC1E6353451D40A382C2E
C74DF2A4889ED5A3495C3E973565F7178CA190D22C9693C10EB12C1E7A8679CE
4AFECFC964CC98111BA4ED2BA9B10292A71D5B11870EB08EB483922CE8628A06
05E7CF6DF93E112B60EF888AA8DB52994EC33DC7277D7B7A4F913AD30257261A
D6EE80476A9A8D316D190BE6CE0046CBBCED365AB305495284FA921BE0638E00
63DB2AA4C5F163340BCCD1061B469504DEE350B82FBE1689C1B65D095405614B
35997D6F0DACA7190D64ABA351705B17B23FE2EE5996FCD607F49F54392463EC
DD5B944A4B82FA2BE3E75E2946D483060DF99277340B0AB65A2042AD088E2B75
BBDAB869D1940F64B50D25078519D18748AD64AC5615EFAAF4F3105B0111AD40
70EE173ABE6A4ACE486B4E5999158A4377FDA6922FAA6E9305F48570D14BC81F
BFF4C663E1EA9D1E050534F9315A663C4C5DA52CB02EA6408AA473C32CB0CD71
169BB43C0508A842F400240F0063243B4C459A1FCB3312C41C32ED0EE87F591A
BCB6D5D3830AE4645CB4D40336DB4AB6540B52E70E1EA415CC6D886827EBC5B3
EC35CC5C136243B0C20B3C603B648B132B99D05F9B48263ACFA59A856BE74441
FECF5C6D1FE9D1F4F9942F460961901E16017144C37E83C6822177B2A6C47ECC
6C47A1104460665E5BCFCF08874008302750EB991CD98D0D8D22B921F90B99B9
05EE7C39F2BC2A7798157503743C9F2F267BDBE2E8A4CDA7317F81DBF8962E1C
EC02822CC7F770FD4D08D335904375BF0C6DAA0510771627ECB9EE69C0F47D30
69A87052989DF80D9F4F19F75B070C3689AB3BE0966453F9D56CED6C1745B50D
813AE6D7E44B73423AB3778ABE4CD2C4DF40E14C5A426043F7057E2DFA2DAA70
EA6723F1C7967FECB1E7C1C0CA283334163FBE31C32254490170C3513580A552
19A5DD75E6C4ADCB12D33517A03318A6BBC7E4214266E125140D8C40F78A0340
1F95D9FBEC4DCC55B71E89375AA94B0D55646F6C069561480407D0A3AC127024
D7D1E9ED6B599A2A8766B8792F46D35508B66F302D289405B101A3C6BADA680D
8C56E2A00B766A4CB155446F862FCF17537A2BE85418E20CD77C4F1F69F70BC6
17BB5DA8FAA876D0E8BABE273A19C04A8697B3E3CF4725E2C77C8761A9243F24
96F8AE96399996001A57FD75106745AB4646FB9C6421F1D4EBF3BE533BD11AE8
14BFBD6D308376B26E08E4ADA490DDCCA94BE8240403D5EB0FE3549061DFB668
4105B4FE77189546619B6BCF3F9723E278E98D50A17DB8A4C46744FA21760635
5B332689316BD17C966D466AE737FE3ED7ABC443ADD88D4823A10BC9747ABDEE
027515AC353A420523F85298029475D8BFD83A2CD00C02CA07974BAA581D2215
A850E6E4C0A5E17E0EDF91C63FAC18C70093F40FEEAF0350B403E2806F4EAE96
BF616A805616EE55C4657418C26CAF54187A6684821B86A76F15088AC4D5B551
66C3CA8DC61E9810858D1204F899C7E3A1754F483134609F6EEE6364B1CC04FD
92C86EF194FA3249601AD722D75D1D395CD15A93C768EC60A486AE885683364F
93DA00A865C1035F913FDA69E7D9A0422880FB81EC23C00427F07A5EA3CCB613
83C859958AC53FAEA26A6BB39ABA068863CCE3D447720BC31A5136E08EE58963
093AF587A72112D55853A1048A2B1695DB2D7F13CC924F2F0902071260C33ED6
30893A04577C0ACF0681C0FEC23E5404F844A83BB5A2F8DE1F0792196139993C
1152094BC36A6AE5BAB4B8281E506F485F0BAEEBBE71E174B7CED1E52A8242F9
DBDF3E0FBA296538D964EB5B7A4E23B1BB0F59872C9D4FE8498203E3AC08B71E
D2B965AA6CD5D20DA6C83FDC86F4A5D68A58A72C5BB9BFE9BC755C56B24025CE
6F24443D3CF32CD711D3D94C7C1DC275DDAE3341D840090F97CB6CAEF274C94F
9F3BD3AAB3F98BA8A7B5CE5E48D1462DAAB37BEB1C10B410E8D33FA42D898183
BD4F807112D78AA94509E33C179BF7C9E82E55AA7D09E128A0DA06A330CF4AF8
5DC861498CE029CE8C1BD15C923A708F2E7AF98E4F7B34212A0CB417553C86EB
6DD46B0466F1A21D29FC5111226794ECFCA5DD4240C0B8D106CCD7EA6F03E133
BB7733F055D6FFA04EF5C6F872B4FDA3E42F0F036C4825543D75682ACF71B548
DED160ACD05625274799D0AE201305DA526E01A3D2A719B1B15C05CC09467F3A
5627860C0F36C503EE392E1786620F3F2287AFE56634E03566B9B1F537FD92A2
913166228791871A8F8CBA1A1DA634E8224058052A10FE1E67CBD3FD21A6C07E
243CBF58BDC78577847664EEA5225EB8D6679AB17C563848A9D4D58995EA3609
51C1443B752A070D9872FE1643F0677019235AC25DC2B29169D38308F2170A1A
A0FDCC59E6602197D2815B914041FFC7106DAAAF30CD97400C6D0826A40385A4
C8520119A065CF32CF2FC5FBD8DFD29222528A7F96FDA533145846B3428F8239
E50277C366418D713F84B12A5FD4F904DC13DB1844A391FDAEB97643A6FD2945
942FD4FC5A4A35E184F23304B8B4D93D0C37EFCC4E106D4FCD0DA3E5D2117589
3FFC2BD1D121026562C55C455C3585050B9460891B006F62D9D9B66695C3D348
A467C14C0256FA9621CB056E7CD389505194FF463BCC4010897F9A690EA87D9D
BB3ED4C174FBADB8A4744C6E4A44D773967FD703EC37672F9993DC48BCC8A060
6CEFE8E6B8F10886E15BA0466AF410B90DF0020FAB88BE493606B6A734EA85BB
926950EB10D2F2CFDBD182B0F133809612CCF6ACCAD049C8005A42FAF78368B9
E7684F98DE421BE0A3BC0FAEE024A7BE67E15C8394F17FE84DFD8156C2A3E94D
08259E15CC657E8CE3088395BF6B5F825764E141AE15EBD186DC049261623D26
8636705E06C6E4A1F8ACAEA59F91B042DF5DB9C2AB986A784384706A43E5F18E
42C29CC1CA86D4F247B3BBBC89F3633EE074DCA4AC15B1E33EE4822812A62E88
C32B0AA57249980EE17AFC1346074800FA529445D18649A0475246A25CF325A0
BDA06AAF392FD455218B13D9ED577D51A9500B9FB7860716A8E2FB3A8C4BE3B3
6656C6A5653AEF00184020ACA0BCCBF48BE3BF91E11C8658686C89848E714E6D
DC158DCD1C1BC03B83FF94C60B1DC71CE8A86B46DBE661C9F8F4677F8A2C7CF1
E41A91EBDA2304735147BE66CDFF2673F09D408297302124C127F0B35690CAE9
CE1679120CC4D582FB69550AD34A047DDFCD9D411724554CCED753DB52D6AA7B
22B0C55EB698ADDBB0F8ED15C971AEF113C74B9E25DA29199237B98DA4023665
C2A63A837E4CAB38F8DF37DBAB5DC80C0AB25B56BCA5D899F1575E61ADF75676
F48EE26C054AD9A75FD88A3E17498AC26FD4DC8000A125D6DD423540B8A98779
B28CE97C9CAFAC45693FF43249E4B559E7F19FB349F94B60AAAAF05B5FBF244E
982B4B51D997DA5811CD43E1917DA885DD96133A5CE1A290DBBFD88AF285A879
D3136C41C839FD2276760A7B4F21F4026AADCDAB3F113FCCCA9588C7FB72643E
AB8F6D8AEAD1DC3DCA6E436B3DF24E7DC6AD37137B49327871EA80F3B8AEE932
D20D9A5B4779DFFAD7B3E5D447023D6433575F8F5AF589D7E094DA3786555D0C
046A427ADF128E00AC7B458D5A131A130D6F49A7ABF47833791F172D69FE6393
EAE0E90E7FF7BC2333D4E0215D5201E4B209591782F8A664335F67B9DDE36DBA
793EC77E5EB405862D14EAB6A99218B3F66F11EA2F345629C402BD8FD9CA0AC8
FB5A2E119DAA9F80083C9BC54F4586C44320993CB5D9CBDC8F8522001F82A16C
E307F175B794F4426E5D273581A6D2844444D82093FB03482B270D693391DEA7
CB26D4A418E48A2989167B7DCE251F0D54F414A0A2B1B15A10417CBAE8887CC7
C4FC60D6580E5EE2AC0F5B718F75DCB33CA5058EE84D1258EFC559FA1920714E
0C8692F37CF1D7E3DEFD43B2B428FBE2D1C8F5DF5891AF008F869D8A0AE61F9C
13BD60B22AF15B084A8B8898F73D7AEE05D7E74832DD2AA8B85FC266116DB6CF
97066AF9A7BBEA976AB7902376D5BDEF977E0F5F2ACE9060FDD7E1E140A8CBA1
3C4EBAB408D908B1C5AD935C3A60B8AA7CB100B1D6F2CEA9B27E71C0AA6E7545
07F6C88F2D7450AB60F6C6C5F513560C5B9328F7A5D76A409855639AB72C04F6
ABCE2BB24CA1AA56B084700A9BB7C9F4CFFE3C40EF398D87F725AC61C059ACCA
E902BEB41A16515E787F70CFE4F492789CE6688DC14EA2D04BC83BDFA2A2F4D4
4689D7FD3B6B6846D7A4E655A4CBB957D35CE14C5A8E284E4873BF236785EFC3
89989D72E1058172C1D17ECDB8CB8DF8CAF7ACB2DA131AC347D7DD393850386F
A111B983931149CEBD1D002C7659804B27E61664C83BEE2B60D85B8F45995F80
43F501C63A77B8552C057501BD56022A2020C530C9BD04C4512B1A824A3C6EC5
B8DFD78A27E9AD797DD81BB6CF40D8499D493CBC594137FD5767DDE33F5BC28C
5861FA727907DE4A92D0838AE24583B674D15100EDCEA3608A99FB2FC7F6FF7A
E570BC9D661C0CCF30877BC3152023203C28BB2A0CEC32A4C2CD77B3A8ABFBCC
AFE134FA18ED70CEE7C94E6B1552C08B4852F11F9151F4039E69F1625DF4C9AD
9AA2FD50D40902264E6EB161015FED178E0A154FDDC32EB9D88187D73521BEE7
DB096F33F794B041278E1FBC75C49BE7F2AB72B35948BF6E9180221EDD0ACCA5
78928815D319AF713773445ADC0F6EA36C6DA9CBD276DC4FAACAD5A17556B812
003A12AD74A679146DFC5A0C04A5516CDE51FBFC139EF250FC2A6B8179F719AC
6B30787677BDB97DBA6C37D351D4A88908E1E57D683F7DF75A468CE1903830A0
1CE6A4F8BA8424B999CCC8C9F3FB3FA4177F24A16C96B850D6FF61144FEA7E2E
B06475AA2B086D5F13ED7DC4727918FAB35D62394C7C321156CF52EBEC0CB3A9
0E1ED55B70BC00794C097A8823BC5A865D3D098B4A60CB0A9CC032816269EEEC
D1F690AFF5B2AEF11DB3E97A1F3E9E98B047779D494D9E203D158FB3A6CC5DA0
3D0AE482ECB5F7AABF9749CF4B5BE7908671BE27FFA537CC1DD8B32132221AA5
952853BCB25B0EF0C0D418831C6D3C372B2602422E1D67C701AA0836863119C6
0C8E8F445F445106127A7F90650476B94145932902E5897F3F7EABAF2C34FC09
78AA3F865D6C65033FD1D17DDA9FA5B8C7A21A356E147F7D25A6B8C11FA1BDF2
FA1E1FC45271D0A72069EE4A409E83188D1E6B788DAC2ACDF8AD1DFB826B0150
AF383B6139DC42901960C5911D0C3CAA9DD92C9048EBA35469A5E8EA1D48018A
4D4D2B0BF2738325C89AB1AA686090245BE7A3DC5CB4A60C72B62704A385C873
6235D6A66608A6BE41828C3BF27D932E168A81BD33F2FB89E01FCAA4084C7C88
FD5AAA7821836F4126BFBF28417B5C511F534A3BEDD69F6E991A171BAABC5D70
B236B2C6CBB17EC98D9DB9ACC3B06EEAFF00FE2602F13D761DA70C352DCBD07B
10F3DE11108A7D712D59BB36840C04A7B47D332675C1D97AA289F96062D48F9C
E3D8B9D51FA9412407E10CC4F33BF49F0A6B3C90F68DEB83A75FD4BC3F59378A
4AF114F730722C5EC48C1EC7D8A453410CF798C74082839F978DD052B0CE9214
1D0C6357DFC64A4FC1BF956950D0A9A11D8B4C519D91264251DE61694597FD8C
B7E8C802E36CC810C7379B78E4990780BC488C7953899CB8F87ED5B96AD25993
6D90A6C4DAD6D6C8EEF7A8D1C3A023B7A9733253C0BE8E6736A1FDADE61C5DBF
58F3B5DE9A3BF11B54FCE233A82D99980915F7DEF3AED93DB4833DBDA561E39F
99D8B4C299B2602715362F0EEFAF639A96DFA5330BC8A57E29AE4B9614A84BF9
3EEE934F661B733F2446337062017E3DA48C65488E6531CAF10F4AB8020F1840
7546F89282DD7BC14D5A7A87D08486212A47E7F720DC59E86A9575A3D34E5747
AF7A96E75454B50C43B40D79A6277513640CC4E7992FC5B88E4E3411492D0F00
9098A4B6E0567AE9A9C245F841E744B67428C1176F82DEF5E5DE6C520D7BB8AB
D40FEB9C2309A330AA6C9EF35D3649BA593A0F9EBF9A4CF024C1D237E963D69C
E27348B9460926E5CC26083874B90A85F2EBD468E0A5C8B4B96D2E0A28FDAC53
748FF1ADF3873D042B74B03FB31AB682BDE9FEB0A99ABB5B1B071A648325506A
A679727C392573F54297D949A2CFFF0E0CF46A06EA6985C590E586C9ACE19F0C
DF61A78ACE2ABF016BF074A9EF6D192C247FAD35DFBB1F3D0BE971812A8A3C5E
DEE58292FFC8516AED898B59C3FBF6C140D01E1014D136FB96E442A8681B00D1
4EF927A2F0C3A84E49B1DD126BC02415ADAEA7046FF31C982586B7A3F086704D
2F749380EAD7DB50C213CB237B187A7B540403D2E92DB3F48434C619A99E5641
E4C5853CB0F981C24E8C36BFA67F751A25C900FE7A2187D2562E08C89AD2D514
E469D634DF4A14EB6D53F0B820B29F5F2D00C27F99EC32C1BE58842DBC9C6B7E
2213C6BB5D238D797A7651060AE01B5428081F763C1EFEC7FDB24FFD726EAE39
241BF9A535971EECC6EA4CA379E5575C0C38F288F580E6189C7F3A0F677948B1
EC866883E7890C9B39BD11CA08D0AC4BFA3533EEED850ACA82601E6381A4922C
C9781D8B360E5AA4DB6D968D408CB63AC736D73305BEF24007F9B11998127514
287DD6498AA9D370EF0A74E77036D44F73AA2E0B1F5CABE244D87FB9B20BE735
649BB6F79233306E80C06140B9A2CDAC62DC739B931DB2EF070F64ECB9A68081
029EA9CC2EF13A57D598D44C37C242683DFBCD39A24463D3E0AD64A746E0DB51
CED4388D550AC45A5A7762FE22786AA97A7A281D007F1F6EE3CB17E0FDB167D0
5506A9695763788221474FCB68D8D460541B18929DEF20C755FC89BC16C5115D
DB0CB14F9A220547915D646E3F9A39D91E1F76A1FFC898E74263CAE452993B5B
24E50B6FC8C2876C5D6DA51F96C84EF55982744FB01E64F359D255C8E72FB9ED
09B49109257898F180D2EF55235972753698C9C061F2F9BAAF636F17EB88960E
A70F1F0F037DD2A4D26B888552DB87DD0D883A4B5AD1B762352ED6351E905383
B6BF0C74A5CCB721F45E7BB4ECF7DB3731DFF530C790CD8F7AF8845CF78DC541
A5D4DA3A23EF34850192FE19FC5ACF7E54C591865D8291D0AC7358A304348C9D
ED17F4BBADC4AFE48B9E85EB4B67DFE3DB962FA171248D2CF5C1FC8952C9E642
5D4FA67A18F9FA13125D8B037CD1520CACA1CA80B728B77A07EF96C720A1A4BF
F794F6B567EB437C6101AF5B4E8BE82C2813504CA1EC0B3F467B33A9A1DEFB73
462E786FFA31A4581AB3426B888FDF42C696A90B61F7AF1B75FD432AA04824E5
B9D462701D29776D4A34C2062BCA93F315FD1F1DF4B7D0AC13A0A53395CD7EB3
E81B9A0B3CE7200DADE550E9670A3F3D8A12C2C09A0F32C215FD84C1338E7BB2
94419491115315CA76462297A0EF40FF291DD2AA6AC7D66508C5D455462C2325
B4C1579B6DF94BB6C606D32DAFAADF3DFED5DFEB18257EE9194951D84C29AB15
A465EBC538FBC5422B7EAD50EED96EA5F23B572B10DB907F68DB1ACCC48A5E14
1568561ABE65C9526ED01DDFE1E0E56855A00C2F0CEED3498AE115FA7F9EE1C7
C8188073C4994E62F33BDAF9D6367652271A67DBADB04CB240C3852B51AEE125
9FD1B0FAE9D9DF2F4440A508BAD58F2305CE181FD47639979B3AA2B264ECA8EB
BE978BDC961E6B985E98913A4AA2F9E53FED5DA59A53D571C8806E2B66283F2F
AC3694A50F19F8F231BFCD092A56EEE171B23F312B326DB54CFF93070D73FDE1
E26E61E8F6D0FCD265B2488772CD6B74314BAA59E54A6D653CB3C9945FE79D66
15BECCEFDC74ACDD0A598E1B5C7BBD252238D07DE75F9DB875F9F933CF5DF4E0
0D90610FAFC80D4040BE4E94FF0E99766399D662AF06F5085C107543973222C5
82445B088510B38A14503A872519F1774BC5D64C0A84C45E25182A8E76D5D5A4
548498CAE57E7A73FB249589C54C65B514B8665E96757A91B7F9AE130D1BE59E
E88EEAD5C16CD87E60E877F99F5B3C9F8E587AA79AEB5FEB58B702E692C6B0A4
3D6183B944933503419738E6A0641371B8EF0D80241216C8BDC7E232C1BD11F4
BD27CD4A23188562B8ECBF748BA638D593DE889503EABA86046F80FE69ED13ED
5DD3B21F8AFF4DC8695EC6E370B94F19A59B8F9863F8758F16813D6CDF20F71D
0CF26785D4FAE2E61234948094C976E71D9214BE08A2AC65660CC1B2BBE9EC29
EFEAC2C85CF38C663AD622A1B2CB4DD75684E1C3676F5C2096FE2BA0BA6633A4
60C2E294ADDF89C72808E6D2B2EF3219EA5D7BD586FFC4A1409B4C13DA0B8460
8126D10754D562A9EF5C1607870DDCDA37FE08315A5D807457302564CB202930
F0589F03F2132E86DF534B32EE765DE318520E424BCE140A685675435D3AC01D
83AAD6AD056B83EA14590D5A4A46A6C4AE4F66190041E8CDFD5504664329FAC6
F10053AFC16E31E56E3387CA04B95F8C45110576D50726C40124BE05F476AE03
BF0EBE2EBA187A8D9FA35C1B03D4B5846BE0161E2F5242F27E18D8A1A0205467
FD3BDC7D98E84FEA1710C2531BB57BF53A8841516990CB2C7BAACD289FA5B418
76E614781BE2CD54760CADB5D36B63CDDAD0CBB22DB839BBFAFD2D4C0DC2B645
CD0FB2EC300B14998FA072700BB4DE2A02054BDBBBF335E7B18A31732275617B
2FFCDB064311FAB7AF3729107AC1D47F6088910276447F6C9F3B35E3DCCFF343
74EDEF9D55B2441EC7735D1C94F99DD95FA40D39B8F9E217B2B2C0E5AB9BD9A1
E8E7071E788108D47C08B53ABAD7B13CF2567674E2B8C077290CFFA39B54DF87
BA0242103FBAA321C56E258401486E85CD8CF24C09E7EDEA57CE2089A88E82BB
C65AE24CF21EF30543CF36A5941C9C60F5551E7F816CC556370B98DC1C6651E2
C1FC6BB5CC906C5C2E41DC07008FF8F090BD8C267097A162314944E96702CA1A
9C29701FD155DC39FD6C62B696F1B0D3F81230438772D70D17A70CACE4B33EC6
3B0E4521A271A577D24ACC2E56CAF6ABF6D5F65E415EB7D8A7BCD554395C33DF
26FC381D8D871DBD252F57DDCFF2A8F4835B6FCD29F98BDFC0F6D8D3731A9937
EB15D3C6AE43A438A72A148946812A16055D19B53E07003C4007B2EFB2716539
B002DA32A6A2EB5D1D9CB2A296EA6C68BFDD87831E377832AFC9CE040A3FC674
434E4C6E56BCC3EB4A077AC63037667B9701C7A1468A28A7D96116D47D3F7B6D
4866801979419AC22A6B4B1A984A17607AFC0D4F3316637EEAA593ED8B28194E
A6983CF97D3F239F9174647721155B13ED556A5AF182CC98108F5B468C52D6C3
0E599DB9A89053A65BCC8423BB865AA316196F34C13385F411C46CAF7D99BFFC
ED2A9BB8DE525E1A01FC47F3862C008F7A08113E1F0569B80EA6EC58A0678725
DC63790E22ABD65D13A4B4BF9C329DE0FC2CCFA51788AC5D3A7A0621A635BC9A
A637CE6D4B9573C58E164A059CD70B5EF0FA26B2C6E439C65D21129DB9CFF4C2
4C2880C827321977F786923C5EFF7D71DC98C00037777F7462720DAFFBEA54AF
C2DB2AB0B6826773BEC7C85C14C3D4A6EF4F67386FDD9662392779DCC8574FB0
F5A24B086C3A815A16A9D5BDF3FD357A1AA754371F3CF327E312C8CD0FC67DD4
CAE0C7352CCA4EEC6747B1744F40A16C11304642B964C423CFAB17BFD6C5D3D6
1B7CBAE1C16CC7B7C2C75EA8649A4ECE6E3506B1C77A8CC7C34DCF94487A8FC4
BB8786DA563B435D44FCCC44ABA16FEF0CB6CDDBBD5593FA8FBE53A16DA144E1
8EFB151FF5FB647B39E2906F467A4D58A120C0B712E990BF68C690D91D1BA003
781770A4E9B7E57E012C93AEFECB854A5698E2B67E556B334B8E88707AED4D1E
D7B113E8A28993BB0F0612A2071F73F187D4BCE7AA3DF8E36B5D41EAA0F20327
0B5BE33CF331A2227047CD33FEF9955A2FBB23B055140F6924A126630492F1C0
B6BBC7CC93FF73C4283F956074AC200D6A454FAD17C1CC71F93391B65D99961E
C6D92A7B3C964DEF40FA61762E2A565D2D9FCE5B3B1F0643598D60B338C4BB99
F0A063842316337A1A5735E57883EA30830A89AD5B86006FF4FF43F5C72AFDD7
7B9D00CEBD5FED5E6E1684A617270A07BB5E7C395268134BFCF3B8B1D7BD1A7D
FDA13E5019C5880BDFAF7D265E82038DF18F3193C775969C0F4B9EC83B139306
57FF07239DA69EA7DFAF4F0245C7BBCB9126BEFB59187B04C45E4522812DEB49
89F83E8F6D8F5D122BA656D0515279C9C326BC53BEC6BD9C0658FBC73EA4CD50
C9A7A5F11882A548D9876047302E9E12A5A3FABAC9A6F1503274FA15860369B9
0CBCE6ABA21606FEF2C20E2DC65738B4E34C9F2F43D14F3D619F10CD7CA108DB
4B8E241A11C611434BBA7B8E53AF6286E3FB1C5802CF0EE5154C6FDF99EC43DF
EC7D1FAAFF1052012B1DA1E3704BC9453DB1F7492E7D5C594E571F751A9B5206
E11D5FECD0946390283E7986ADF2D1937257B6A6F244B057B719A0EE43BBE53E
776FCE651700DB97E17B39B3E8302417357149A4F8459826F60A366E36F0DEA4
4DBB1CC65AFE5AE1CDEBD516230FFDB18D69646B60D7DC813AFCB81E4ED58C9F
EBE89DFC6170EC0CFD7C1CBFC109E3FC190B7BD4027AAEC75B7592752EC6518F
E2895A696AAEF0EBB0CC9690A4C2BB09B5F39F5ACFD7895E1C42FAB8DAA60F4D
6ACBF1D5BCCF7C24AB97F2BCCFE6C386E3C5336B64709708D32854530236B2C2
EE81B58C140734AB2309515C3D7F436634C50B1967387648D19C0E31BEB3D0F2
8B077135C8B12A38D9DD2B9F6498D4F4DBD96E104D35DE48C34F87764ACF131E
048EDE339B66A7B792294294A56528D0CC89DD72128F78464BC85C1DDF2A760C
20A545A6B7E5A6873D5696DA9DEE2B8580BCFE163AFCC42662DE723BDFF577E5
3306384A66DC85F2720FF7545441944ADAD3F630C2E7276BB2145F5895BD4FDB
117B3FDCCAF96715A419D74BC186FE19B3E6F2657230A8E0E3D9D355D982B4BE
5D4C7EE7AF00BC8DA24BE4B5D6B44830054BCF5C6FC0E3339F3C1C0FDF37F251
850B28C08760F0F66C73F550FC5B226C49061C18EAE532748FCD5D31777905D1
CD3F05C0B10E2A551680EA6435ED116392422D5E7C5F50036871C6686A37EC3F
1C207D09AD668F540077A54ECD618F5168C0CBEA150B0D451F35E6C3CF07175F
809C0329414136B3B7712035F8841589FE146D05E5BD79CAE9989231E31704CE
F520248F76D9D2D03C9990C4E83C9609D38C234F0517154070552F754618A4DC
DD88F4C8AD527875D8B12C7258D6A00B321B10D8706DB35112C40FF469F8F831
575366903DAA8823CE4E4C2D3BDA2BE5683052E5C1AF27C8459A96A418E821B1
538EEBE46D8508F2557B55FFD220CE8B6C42DB716825B3DC4330BD1B0F41B2CE
B0053DD446B7D05DC16910C55C2EC72ADF2F0F6174BED2CAA00C4A34BBE89A4D
1A7A09461665112832E96380F5ADC9092B5B2AFF6499216394FFBD2F9105A779
FD1BCD4584DC13B3F8ED82061E9FD3F61C7815A5CFB83E38BF43914FDE01D128
9597294F1006FF9E2D2D8EC3C8901301889D632D278C655AE9A2BAA7DE75B1FE
7F4893F5C12A7632D1704B9867C833ED3E729F22AC2E5512FB01A27CB9EA42AE
3443E6921D8829079721C9E7B42BB132EC5D02D309CF406BEA8752DCCDB78CEE
C570E31DEC8C8CAEA84AD7FA7F329B8765371F80733BA6203C3FA29E0C43E7B2
86873B45C07931A5DACCB0EA065D6C5E2717733DBCECD51A4A99AE87BE22CCAB
CE446D158FEB49ED1F96156EBF5B7D62ED9DABD8BFF6F9E0DD4A29634E56A1E6
DA7135C61A050B0D26CA44EDC8151E26029B8DA7673C500A8F1A6F5FA0463AF6
0A4B0684F2F75794A015D8548A5114288F3CE6F7B3CA1751F67EA2021C50C7BF
9364F4BE177F2ADDCA2A48F93A941F572A144B3EFC4BA44214936BD518E0A6DA
5C8754DE37C1906D1405F348F06BCB893AC2A106764EE559735A925D0E5B40B1
44C37956D4647D2D624D3F596D4D55FDEC6486DBE36EF41A50D06BECDFE9BE8F
389BD86335BD5C53D9CD856B3DFCFC6FFA0B560743860C31860B237577DE855A
C0A0E773DE8E0104EE1C3004C0CDBB26D995E5AB22B353D771DB72C2528F2A1D
FF7207C9A01C99D77AE981A8156AC3A4AA78BE06DFDD3CC233BE70AC16B109EB
68E64FA1472F4BBDE0B5CEAA3C267CD74AD1EF431359046D568991AFC0C36E03
9501F36B65367FD8CC9FB1C1814303BCE1D34B0D8C61B607EA3544F900F0F428
7D7FC2F589583136CBEB03B5F6790257E7D2E7757EDB2516CCFF517CEB92E124
9B0480B41945EE5284EC60B0AAC63CDAE7D6D6BB08A38F5ADA42D0596D41B185
4CE914E45A5AEDF64505681D495FF72AE527FA48ED3D64C470E1FA47143660D1
410A641508643BE741BCDBBB3A0061BF2409D78F17D1A00B091B2E5F547F1AEF
501622E669DAD6725AE13726B27A38FC4AFD5FBDBCA65EE93A69A88418429BEC
48ED0FE7809E3BD9C2707E83015106D50129DAE4E6A4280DD0A4047FAF5117D6
A0DE125B1D59EE4EA17455C9BC265D0ECDDDC1CAA82AAD1032D5CFD3B2C0BEEF
8D7F7370DAD192C179B06B756702338E9A2238359CED8E89740EC0D326009CF3
528ABBBAE2BC9F0714DD31AB46C5B53823044D24228A3DC76F2DAC6FB7C21112
67586EA3136CEBB999CBB25A999648A1AF86763F92A5658C937EA7922C8960FD
FDBC8B9D68F87139D79394B35C01B43BEB23DFE096053B668EA3FC26B13DE83C
A704D357F41057ACEADDE58FDFD3629C8316942B330221881F4892EB27C34329
4F346F556258E9AAC70DF7B05119DD580F8913C3367B1C8E63A8BCE14FEB9AA5
E93B4CDD1D8D213EEE71497B7C2DA101012F958C0026C01E3F5FBD06C9256D53
7BCE41812BEF90E6976683F974744490A2CB5E86F91B08B2F5DAFAF4280F5283
783E3BAFC3605CA0E2E5FF8D49EDCF2F0C95F4493506EAC8703E26C78FAD2592
158FF126E806DC925DD8FE45A8CCFE1210323667E5B860B7D35D746DB2647294
5806CD196B20874AE6D51A46E83FB1FA8CFC087FBD4B1621358C2B73243E2888
AD5F7425CB69495C577BC8B9F02D79EF21F73ABC121D4D9422A5A2A5806C28DD
79CCF96ED2F11756D7BCCA5F37E580F746F5DACB35E04CF654785B791466EDAD
1FEEB76D8CAD59A178B23C89201705FB2B1D51C8A12364B93D0C1726CF390435
92FA494632837F9D514B1C5556FC4A3EB29EAB1D30C46B856EC47DBD9A32C9AA
6E5A9C3DD76BBE76FAAA4CFA52F9C32DF6088D3F0B6889743965E68BB3268A66
5A68223DF951AE9E66C47E1693517A1544AD001F19E403A5825B2B61E45EB067
84BFB90F46B00BA874B450A2BCEB2459189D1B9C51EB61B81F36DFB5C9854BC0
DB8058C77875674738C5714EDA08E9EC4678811F272B41B76BC1E71DEE9FE0F0
DC64151FD3E518F625F98BD5036502B01E9FA527AE9AB8E752058ADAAF5A22AF
207507AF55AC5A82BE0C06F93021865B60DD69A4A0995337DA12BFB2CF835144
FC8798D2B6E20EA700D64571A850AB2EA1F8D50956BCCF62C64C39E70AB81AE1
EDE698A413233ECD8E8A1234BCCB395699B37A5663B9810F6F230967ED388EC6
CF9D406559EDF8208FA625947416B444ECBEDC17A82C80BAD60D3C0760FB8B57
CBC714E02362339C11145C2BF9D67FAFA5DDEA06A5E8B1457FF5A487A0154285
A5A2A5B280FBF4B3B6A64C9A398A60066305B85B83AAB658AEC500391590ADAB
44ADC6A9792F95B74E1855D9683E308AD4DB6C91E591C58AFF0977B98CA02CCC
4C1727C01AADF245276D467D643357E0D363F0697225226BD12DA90476714F26
81899257F22965D07F80C7FDE87E33BA711CCF72A380E89BB7C3C7AE6D0AA464
CBFB855D051A9C561059BDDA00564F57F99292F4885FBE2B7AF4C1A147F621D5
9F311C92504B2A80F9024347F8A5D03E01C330014E915A75DAD99D040446940C
3FC4C754627F14675D6E225C3B8AF1875FC04F8B8B4F3B9EACE41D1A6CE944F6
54725291409BD1CF462C106E00032EC0097868D8B0061B3A0684BC52EF850028
E3AEFF3DE08DECE2586B630A1CB2BAAFAD7E9974112512DB5D71DEE6394B814D
4521715605F22499AB657E82F96DFF1422577B3B4DFE8BBFA47F3314D46C38BE
8D6594B1DE7C331419D4898DD0BCEAC4CD572715D94C7BDEFCFF40EDC298E851
5936B5C0520F994F35268ED63EAAC9AFB225B3F269433C5CF80FBEC769A04ACB
D75C7489DB4CB4857DEC75C37BB3DD5EFA0C917BE2706CFB1899EF3D340FBA57
B0956007D1A243A94523A227023483D356AE7E663E81752CAC1B1466F8202E60
E43369CAF3F7E9F9A5354294852A6AD691AD8F1C6818A53DAD8255CD21B0E2E7
3C7B398754FAE39B372357BC795405F3DB935C32DED0929B1C022E1F8DD11E74
539C4B7AEA09F0801471867EDDD07BD4B2D6C0516E41BB508479D6813535CD2A
1D206DC333421F932DE113EE9D871A176094ACB2D95D325D2FE161328B12CD35
0D4C90800FF95929275FF6E9293AAF5BAE2567B2943DA3D9D4F862230BBF8381
AD3291A79C685C75BEAA83A884C799FDEDA1C834337A7B11DB10EC711C710BAE
1235DB51CEE5A74349BCA6B6ADADF11AEB90ABD3FB4F480C0C613C46D4F16C75
8FC63B2DAE0406EB1CFCAE9E08EC72FEF290FFFFF128082DD60C4C00AB53EB04
473DE19CEEFFF6B6764DDA82C2162594937D83EC10AD6699E3F34B679F4786B6
5FF871947579FEE7FBF55DFAE861A400732A99693F47AE83440B77F27A6242EB
432E191F8945D9A15234DD23CB2B3B491DA3C04E36A6AE4E6FF8B6857369F769
5624C5C672C9811B6B8723BAF48EDA4884A22E4C7A54964317E03BD46ED7AD12
9B73E633962A95B661E3290E0BD4FF99461F3A9DA8503692252D108D0E346F1F
56E026DD6AA856362F89D45BEF62277EFE21EAD40118DEFD1B1036D478FCA9D0
35E80C4459859114D4DAF13E52117904FC08C5A8FA854DDB47B3B51BED6A6C51
382492F39E8FEBB5A13CA436E94218F8E1E2806C5444A23E523918C13B0BC59F
82B7464996C3957D47DF3CB20BB31F7350D6E2EFD48DDA55478B3734F49AC9F2
1DB1EE335FA92156FA5CBF442EDAA30BDD57A0C79CDDC2F404F965C29A377E1B
295EFA16422EC308AD6DD6D30FF02623CB1131B396887977F135884095B9F4F0
9916720FB6E1C57887A595AF3C226D769303F8CCFA841987D05408633795E858
1A014801D204753AF4EE8EF80B82037CA01D6A43188677AF88242B9EB7880B2F
49B2B59E77C99F14F8C8A4BDCA602CEBA426EE4DDAF90408774B778ED94A83E2
B398873BB6446F2BD3D7EAF5CA417924BE932D3156649855CBF6C99C00A2E4B8
EEE59DCBA037770578E00BAC97A33004BA72B08C7C0059B871E49AFEE8A8F361
A6061051345FD9C6A9C24B0E9CE38CD769CE4FDD6747E0DC70C0CFA6A41DF099
C837D355CDEFC80BA462EABB8191C5F2758FEC6F2173608F2FDF03F5A5FBE2B1
D5D86FCFDD83D6A36B197FB2A776F399EEF7813F131A7273064BC05C12097777
6AB4AF18BA826A91E2EB555D35EC83793EBCC67A4227746874403C1CBD3B7044
62ACE0E6599C8DBA4E544DFC3205AC8C879282AD806F993A2C27CB67C8BC7B56
71BFA3F1549D04ADB31F6F0B3B8BDC61BA824BC4EEE18874C9ADE06F87B8AB7E
86C83156CEB235A84C2A72BFD8FCD73A98676B9CDB4C59D7FE249467B4229955
1428B0A2C137B3C97B64F97ED8B567EE51BFD644456F6EE6E4CBD54B4DE790A8
D81856288366086FF0A3887504E94BB4B5F258B409D5BEF4D91B71DED7C42FB9
B98E9EF643F522FB82DCF8BE884AF55A0CCC3A60EB1A6504F0ABF5BDC9AFD02B
2A42F68FDB824CDEC72C3E832ABAB62C2B4A90F4C0B02A41D3F83C8BB99C3E0C
88B2A5354C67A0539CA4A9B12C6C0023C10E33C1A489C88B03617298A31C572E
B5D46DD1CEEA18975495B53105FDFAB6A8924617FABA7315E65505EFF1919E9B
A9019459DC605983ADAFE67FD9233A02BB34035BBDABFF0F57AB89020D5D4C91
E90A9F97BC9439010BADD1BA9757D07EEF633E84B539351F6CA69B7FE1F94336
6846847A33C302F490FEB9ABC415A8D2627BE6DC963C5DD9C263EE59CEECF473
4BECD05B480E88C44D913AC5849FB158F9E143658343EC5200844A286CF72B4C
55ABD3F432E269DD6F27A0B4572609EBEFAC2B5431A3C88381467E4F58142F15
BC2D3831C9B833CC2AAB9C978DC475468C616C52DE990F19CBB4F6E4BB442246
0227EDF73422D0AFBF4AF74FC4ADB277BAF6822E578317E8175124E5E0E14560
46048D062054B9592470E9F8E0BE9B8EC7F415CCA7213CED22E6D06244A17A9E
92A63B15B4ADC1958921ACAD11805E3E9A65D4F60EB8E234632386D09FBAF6F6
F4924B085E3182D783B3A76FD2941AC8C2E696CABB22E583A619E76130FADBD5
52D15CE22BB3FEFB181308B3DC70F8F76CED9E38ADBB918E1121A3EBE388C41D
B4EC191CE737F2490E27F5C2BDDFD75AE73FF6B52CE6607C0DD078C0088A2EBD
5EE254189147E79A19D054345DF144731D7230F322E271FAE72064390DE58480
78E8FA2DB7B5C70657F78328F30C122B80EEBBECE67A99E7FEFF51F529C4FAA9
B6592AE50BF6EA8FE0A4CC5CFE0BBB202E834D4EA543CBB00B497B06D6924EBD
7FF8F93AB3499029DAB8193311D2B620F897D46B7A2A565FF28D4DFEC4139666
249F9ECA8F4CED5885A31F24AE3028CFB4B4F5B4F41340EB97BAA2AA1CC11CB0
8236FC0A26CE2F8960680DBA8C6148B1DD37D9A9D80A918A7892700C9403538D
76275EBFF6602C9612F07DD7C9B4F58696DBD79C528B153EFAF868740E918729
2F7DFF3E5070181052DD43AEB3EF5EDEAF57B881FF39856527CA82E2E0E0690C
2B9414A15A5307B4D35907684EBC3A3B0D5971DB501B6101036B67E78D2AD766
47E5CDF837F3EA333B64D45CB40973C76CAEBED6E249DED242F61A533698803D
5B9C483573B9CEAAA62AAA5AB575ACEDBC70927BF00B7834C021B569B26F1750
4F14303555ED7359E64BB5F9A9A1731CEFCE19D9F879D574B3443AEE72A97CBE
A0478DB0B8710BDAE9E615796ABEA9C2CEFBD24B37A430521F1F1ED86A90228A
A3B725409D8453024F9AB585971236039E7B4E940D44F2FC8FECC38335A72906
FA60E98DF475CFAA7DD00FE418644AF93CBA27E5B4CA4EA3C8FB118746534B92
2B110868381E54FE124E6CE0F9460909075F0B473D985B89249EB664C997A506
6530A9D120D8519A293A5DA359FF9274B227E0D1711F852D5A676382B4C3E0C5
5119AE0C440A6FDC9D19E8579632653DAC57D4E2D46B767B4CE77141B7DB0D5B
F475A2733672C8EA9EBF89462570D25B79AA1013EA62859242CD145BB2708ABC
F19F28C0242CD8F75A5FB8CA83FC95F0BDB5CDE17A1B038C58C67BF818EE5FA9
ECA9ADC98581ED117E9352C133922307472F3044FAF9D0ED66D1EA10BEE45667
14B1703435FBA566A9B731B4AAB24437E8A69F8E97FDC96AE5610B22AA5FFFA9
4F87B129A4BA6D78619D5A3B51A81321AC1D7D8C9A6F24AC59E32E671A6B470A
6ECA4AF1EE6DC34CA858E82DA35191C5191D0217EF595CFFC1130478E1F6531D
4CE1DB92EB38EB78CE8EC006C7FE659AFE55073A85F24F7627F8DB60D4A219B7
DFF635C060D7704664695A83D346276FE4299C644A75EC8EB4E85AD6DD08DCF2
5F73F57DD26686BACCBA95B36A544978FD6CE442A3B83E8CAE154BD2ADF9DBD5
70D764205549D0BD62A3247226F7F44051FFF34C17E4E7D7D31E73DC60CAFC33
BDA1BEF56D9F92AB2F665EF2B9E132D39055002657B355E2C38645FB88EC1518
E7794992AA9707F5728AE427942421DBECEB0C41ABFD29A71E80E7502D2337A6
11C9090BC71B35EF6BC461F36C57505E2AC9152D14E386CB4870EEA2A3878599
DEB7B53B81E0C65E4A0D854EED0B3E6AC26487BA942ACED207A8D2E510DEED0F
B950A80B352E750F8B090699FA6C8EFD8AE7F39C1DDD6A7F5F4FA46F541D4CCD
0030757175DC42F0C618ADDA0BE40E5E1DC183CA471AD23C83B0C2ABF146CEF7
E9CA72DD3DEF44601C5564AFE67EFF010A2F08FF2545FF3C0461B45B10660AB2
A6DBFCB2EFD03C765216C415C5CC59422C17FC71AE47A6C0F946CCF59113F2E1
A662184BCD3588CEACDAC9EA7A245503C4B78E602C63A9DAFDA6A5FF6E101613
895E0888D34825862ADC9EF716EADC67AF1FB9FFF6630F214E6A2781712D9611
AE7B4A929E13BC729CE2F237931464DA70A5951387DFF3EB4949CDF76E29AC5B
214CA1EF21A5717C6672CEE52AF9FBABDE24E444142E854CE5F92EDF72EC51A3
3B4B88F504D49F87B6237EE7E56D662912D6320BB97CB7D1E0F28A315D039207
FF488A7BBCA48FC74D672BFBF6C46CB045D336D4CD83C02212601F8F944ACC94
110A2475B3D719F49090872E3AC6CA2CCB19FA54BCDAAC5CFEDB094D2F29DA09
08F389AC98A0C6E8B6ACC3161C7176D04B05399A792CF60C92BB036842C54F78
249722900B343C870C17B67CE8214EF93EC3EAF5D15047B901E5B7329983AC49
C182E40DBFB9338561B49656BFAEB9413B43CA28A59DE6B6EB76B09EC5F3EAD6
A13412AC060737FC78DE24C2A763FDF2FF3BB22D13B425E231BD597B4CFFBDE4
6210D8CD6935E42E15BD1A7F15FA4827F7A9DE9B8C295BCAD7AE4F25CD396AF3
0AA5B281043F87329CAE477C0AD8B2A2B49F39B0DEA2E0D63E4F57A2C41C4474
ACA713F273F03565954192BE999D64CA7DA1F6B00A5D59996DD77867E2C476D6
C6551B7E92824145FC1F5C4F6B07B1A3F817237B8CE11232A366071BE79D45CF
E4A7AE01838C114AE39AD8AD04C606A771CB5E01F3C78F680DD48905F75B1AB3
ED9430E1C5A7A3013B215F98DCE20B033AFD641D260D9E24DB542613FDD85F66
2028F4CCC519733BB846968F1480DB90D752E644AEB892F87FF3555E13309BE3
E7E71A543AA01CD775330ED2B43E3328D1471392AE9068155217AF118A26A916
40B690F30607F2F86CCDD07E943182F4F73879868DFA85A3DF23C57B2ECD2F48
5CC1BF5F6A55101746832B6BD60CB4A7DE6F12A27B67D34C2BDE6D5E2306B822
8EED4CA46AFBA82798B2CEC24522CA581E6776420DAB39DE68D5D27B4E013A85
D65DD4B650FB776887A4704D27433D759B514EA7FE0C5D98BD052B3E54CBD6CC
36A66972D0BEFA07287EF6967D647F4353213856309707AEEDA68BD8856C8998
6F095910B656D3ACD713F13F6C185D496CC5A110EB65C94440F12F90DA08D50C
FD642A13D33A074C254D1243A56BD3189E860EF8BF7CF30068B85BA973FF1286
2D901358659E9C54C90D892B01B92C4B93DBC501FE5D85BA72B9C9347B328BBE
F166CB812EA42EF19C1DB0C5DF407E4BAA79245CE209446437B23BE0E3F9867C
8DB9B248143DD5ABBEA4AB5A8365A08084AC23E9FB0EF25AB94E1F5A8C1A1206
22548F777C6F46D960BEFA1E870F818E4B236A88D05F6524850072034A3E4827
4A2C6275E68FB5C22D552F86DFA7732737371657596B56B0B556A5B263321636
6319EB5DF2B1F90DD763588427EEAEB9C7D88373AB6FF4F3A028CD10C5EA4C0D
40A8B9B786A5C61E49636B97300C56E13F3B5B0D4C7A014215FE9531FB7F1C82
E227757DC7E93B47E27ACCEB114A728FEE345BBA213B3DF67CFB71D43322D85C
574C3513BC9915FFED058994D0C71C64466F2EB5E26628019E957CE72F461312
BD74E953F57400F2FD7AB929A070AC77495E788EB97BC540DA94F6AB096A1C07
B6D453B1498999271118CB9CDE1CF3C9544BBC21B959EB6A19F964C1C3B3236D
3774AC2AA3B4C83E569B65E5A695155B34935956361E20F311D18795A589B8F2
F8E37623315600851F87480082A5BB0AB78B691FBBFD1A3CE01013BA45CDFBE3
EAA49E092680FABCF81FAB2E41D73608692C03E4F4098C74C63893D4D95C61D5
0C390E6585F84FF45463A934B79FF26D19CBD01FB51A52931ED5E95928BCE609
B163F050B6829CA04F8AFC2C40B6A0CD8D1A224DC3788E92142FA0B80F614D4E
4A2925615380200EC7300835F7A9EBDF7097B703DAE34AD74C4F6EE46B791E46
CBEA6CC3C6CD9465D2A02418CFF1359F49F51DBDDAD42EB74D4D4B7CF4B70B8B
23CE173957F533D036910500025F6F1E841043DD4F33B26A579A03E719649963
BBCB7DA4E2A682CEA9C809F978C5AA2D2EB18B23DF7B4E8F4AAD94BA80BE7432
E4876FB3C685CE5DC7EAA306AAC3301F5B397B684711AFF8AD8244F3E474FC95
8D963E6579D84AC4C175FE6F2F30CB76CCA04D6EE8FD23FA0A992B1DC1C0634D
D59B5F31CD8E010C96CFDADA620CEE94CB74FDB3A28B04791F521F6D2EC685A9
DC34ADC29D41D79FB4F182D76451A51D7052FE1BAB8DFE7CDD234F2CD6282F70
2F6954FB1AB3F64EE7F11D81F5C077444429374F998AC7B813F5589FF9734C53
D5BDF08FFD5C68FBBBACB8A79758B58F2371D28B023B61514C05E09CAF55F08D
65A220672195958A8491E3B44EA67234BEFFDD1519DB46016558B04D2BCD071F
DD6EDC3D663EAA5778436D1F37526A419E7D35C19747F80C5EFAED235B65BFB1
1D01F2FBBFA30284F9E4A409BB8F08948B756DF000C0ABA9C5A62BF519C3A910
BFF652E06465474E7E71497DE7C832B102228D6BE457746719EC65C500161136
7EE3568F06585C8AF817C14443CF350F45885B023A799DFEE66954FF7CFCCC8C
EF70CDCE8419734B9378BA3E6C773BBF261CAA8665D99166A857D86C4E617EE6
FEC3ACECCA673C2F15064EEFFC54EF4E669A3956932486F681FEF74D48E52C41
C3F3581EA663C879B6C284DA8FB762927E383322B517A3BCC53A2A5C69627300
2903C3A7CBC8B33E1CD86EF1DBE2673EDB6CC99313B505E0167D24052ADA9807
AFADE032CF20502F39068D001D2AD98CD1D721324CFCEE92FFBB81287A3032A9
17B7BD39EA9F19870B30A723D3525D447C8CA2BC2DE476F3492852B7D676F329
2D1CC9FD3AC54A10490D4095865C34B906ECA69B9314EE06A732B3D511FC5BD2
D63BE1F72650F9A037732AAB06FF266CA5119DD7B540CD48EB7941CEC3FAFEDC
6F67A016FA96E7E9901DEF196AC42176D8F582BDE7D384085D98FE0B9BC3F6EF
83A8497296CAB5AA555058291433C3E1C22E6C008E427FB8AF38412DAF48F4AE
F5535892C2501A81D94F690C3BE57141E000DB9CBDA42F00681AAC2766B8DAB1
D9B69FC7EFE82D0B8B82C53ED4C1666967062EDF063615E7ED61920FC8E2EA2E
88365A744848BC02183B19C9975D6BA081EA3ADDD90356B8CA6A712D41A73C0B
094FE5F99E1E66C9B2CE3D718CB07AA77899611C3FDFC71B8D5E99EABFC806E6
943A5075B1D45EE3FECEEB06DADA3200415A23FEC37F3ED44BB89E9149A92298
3C2F70A1B9C6B1DFDC5D762439A77DDA72EBBD485F21DB9B96F5C1D45C3C6BD0
7597BFF40B0BC1DD4B0A91AF1DBC0B7108EB8E63068F1B2024CD2AC983E68A5E
864D1777729EC02594BBCDDCA445D118DA815A175488D9E7013FADF3A959D030
F03B5130120B105DC1EDCDFDA335FCBBF1E05FF3E81BB15A5EB91DE07BAD71BC
9ECA2440368C6F5EE88E25F09FB6CE08D0F4E6449CA4BEABF48692ADD6C7C166
9B184762D2550C991E8888662B793EC734534B91EE450EE41C4E2D43DBC80647
D6C2EDBED7B38DB25C23AD0DA2EC58F1ADC15B7C1F2E5ABDA3599ECAE246547C
9B492CF6168BC8DFAE49798F3F48095FA0BD7B6F66E86FB9622379F964076552
96EE0BF585100662BCC61FC740B008C657765B5C07E8099C7FC91892CCAA5576
03DCE5DE917D78E07D7B3AFB6E36612FB2DB87EB0E96E9D273981BE5E815C772
4A5688D730E648C11AF91E93612F770BA7E8162AE4CE8F6FCCFC3301885BB19F
2CBF706A9715445B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMSY10
%!PS-AdobeFont-1.0: CMSY10 003.002
%%Title: CMSY10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSY10 def
/FontBBox {-29 -960 1116 775 }readonly def
/UniqueID 5096651 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 0 /minus put
dup 3 /asteriskmath put
dup 13 /circlecopyrt put
dup 15 /bullet put
dup 20 /lessequal put
dup 33 /arrowright put
dup 41 /arrowdblright put
dup 91 /union put
dup 102 /braceleft put
dup 103 /braceright put
dup 104 /angbracketleft put
dup 105 /angbracketright put
dup 106 /bar put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B1058
93FAF9435086F4932783C7D4837170DB0EA31A11EE76B1B9DFA42BD7AC6B7A02
60798C30DA069C1E3F3211861EA327F5E48E1F440F6ACFCD1FA8A7E239B78825
56FED1C49BCEC941D4BBFED805E0AFCFBC77850BD291FA4F8FE707CB4E8CBD1B
1EF055DBB7929E9666F539079840B5A6B6E1AF4FB0AB0CE7F517E28F67D1FC76
2965CD2C4EB718886E4FF6A9F8F6EFAF9552AD1D7CE47CC42473F8BBFD598652
5AF9535A2078DD3E501DF0241EEAC306DB1C2695D6DAFCD4F28DF3EEA1AF6EFF
5490E5C45D2E2FF381528AE3E23D323472F9DC58552418F93AE4F1EF66EB99A9
D76D684A1AACC206A614C6A6B3B2A1F189446E9ACCBF41F9D9F03F1466758C19
293B55B8EC83AEDE8A775B2634B281C7127FD818271FDE529A96FDBC5AB0B8EF
AD74FC70A687B89F31BF69838AEF1CF8DB5AA29D60B224C9B8872CD9E55B2E3A
E02EA7860F21318E697822FFF91E5E66C912B6E181015AEC25E2CDAB7E3E2BD2
9D6E460691CBD49F4CA39FBFE3D2ABEF937632E8E3836465F77F858C6857B5F0
A4047584A54103BF65647E491266EFDCBDB26964F23A8B1F8F17FB692DC64F3F
8027332EA7C97A55A758AAB207EC7234E3E37EEBE7A9AD06173AD0E0E39E2579
5D529FFC754B37A68E3A9C5CA75A0B2C8751B662AD9ACF4EBEB58EE912FD4BA7
B893FE02DBEAD80C03FD91C56B8CB5DE274AB44143FBB248AA643C5F1BA7E15C
F551E15B2690BFF9043A7B37C363768ED394770CF0A37E9C4D6918DB102EC4B7
8854C1EDFB4172AAAE7B2A6AB14112383379753A3CE50CC710B68CBC958D2E5B
08C405A0D4DA2A3289096F4D50A79BB459C230340AE04616F5F1B3D1371EEE72
4B9C6C568CB2F5CD38D127E26AD26E2733C76EB3BFF0777319A228A5A31B63DA
7D7DEB9550E9777DAD43828ABED5D2CD8655BE393FE69FE6C92608AC0E7D30B4
A6D184DD88E7C4BE0B66BF88763ABA05F7ABD7442A1A6F9B2D0165951D63638D
0B0E20717A699BA14BBA2384A5ACB8B23C72A51A9EFE87F9CC793A7EA07928EB
B9D59E21AD84C0DAB40BA41D831DDD656377562B49B2B6D306C52B8ABA05DC31
6FEF4FFA97D85789030645BE8ED1E5FA005B38F27C2C05BD72A71EBD1029A878
2D21FC23EFC86FB9E5A59FA7FE8E9478DB774AEEB808E179F7B0372BAF3F3BFC
27ABC789CA4632EA7369B5196A7617E66F12FB9013C9E12D1705A7C405D4352B
1C960D55C802438D1091015FD93F60E3E8F0209C42C677BDCAFEA5EE5737EB7A
69D2D6B4B20479B66DDDB5C33790F941D19A1E2AFC97BEB7E94549D04EBC0F11
06F6E396C719C1FE2F9C14211E8B0C2E3F308B766FD6D746E8223C9EF2823A8F
91DF992990F2CAFB63BACFB41EEB8E26B97BE0210568A9EAA12CBC63A623712B
E459E844B35C609327FE84F576C1B604C0E8D1609A6D60D30BF30FCDDB4BC921
FD6DA2E337FBB99957CA9940C4AFC875B144A46D02A0E21E49AA593505C8D593
070A5998AECC2E6B73531BA027BC45BD5E84EFC25B7C06F6496097B13A2F8E0B
4D90CFCB77929ED70E85B81F8D1BA0980742AF941AB91DA1287F8BE9532F3B85
9E842D3ABEEF9E24BBB3863D5D72C50A9363D5BCABEE58FDF5F86113071F0F4D
1C887A0AD50700B6EF3ABF22429FA61E703E0DFD1A7331AFB2FC717F685B5154
EC0078570D155263471A6FBA157BCFE0761F1D91CA03881FF3173B91A71ED7D0
F114365F5BAEF3242C23799DFFDE4FCA7D023EA27545F376D75B67896E706D9D
A2C2E463157CB987B8FFF923DA59847DAD9B251FD6AFAE349F25FE568E00D97C
114F5A35975B91CF492EC325DC4806FC60A4F917DC7667F2A4C53AB0608B74A6
D21A07EA2B2BDE272C64BBB67E930AB97CF6F5F4EAF70144211DE8CD89A78F21
CCCE1D188101BF2EFA70A5506FBB0244676C7091854041302E6915680AB9C360
AEF3B7D3B35EB90AC68345E00AF2AB6D4F6CCA7DEA4B6AE863FDA3E5B5591FCE
1D393A89016192501A9BE27CD71CDF37A98CB7B5E71D18AAD1BAD85BAD3BDA81
BEA3CA22681EEA03665535F6AC237EE2C9E8EEB19B2EA28591130F6222E56CC1
57560A9FEB6712613427B529D8E445906DB779617B5F1F9AEC4FF43965DB4B92
0A178D8EE62F6C05060E7C007C9B448FF7CB9DB54F5424F0C519846BBC4AEA7C
B6C19478C92C901FD0441015CC5DF494C5A7DCB54CECE1F3BAE8AB50A4893DB0
B990CBF7140887CC3BABADB0C3CF032795F9D27906B2E9701B55825523081EA1
713BCD20D5CB005BD2E846E0BEE9CF9185223FAB0B0CE78D37891692B875C291
9BD7F5AAFBA14F028F37E6BE38F0E277DD0E9722B77E692E58BABB76B3BD8BB3
19E6627EE0D77EA2EAF71EABF7EB3B6DDD9C9C4C08A206069513B584C3EF8500
E147311B1D97801A07D9752B3B8A0872833CF0E135EB3C38F9A4BA97A1342F13
65C5D745EBF88BDE308740D5C0DEEE475D05B5BE30FDB264A571A7EE742B89CA
3F3B9893AB1F2279FACACA2D0B4A3DEFAE621C0C71DEDFD58BB5D99896258A6F
892B5CBAADE5CD2C7EE9E5C66080283FF18C55E29AFB930B6682757B703DC6A1
1C873337BA4CEAA6234D07CEFB4DC81C52BAEB5366B6000BE49A223A11EB1336
F33108234FC559DD1F7D855B0190AF202BD7D6D532C5A05682E29AA3419C2193
7B35646C2D85F0CE6527CFCAAD5D5BC512E6A26C6DB34988895E9CE0E398CE55
6BC105FC5462CA36042AE4CBFDF8C570589175FA863C70CA33030A3C5AAA7E51
EFFDC4519460C1817DF9F0E9CFD8E06A151F18D1D58A2258916147FEC3616E4B
F49B0968DEA96A9F953B8BEEACB7DD01BEF935C229691181188E2127DD1E3BD8
52A017134624AC3CA92E04422CCE6443D5AEA8A83CD0ED73C3304948F71EAC95
402B8F9F8D61959BAE98AECC3E01F86313FC332AB814AFDF5422AC5EB72C5F99
182384E7171A59EF92B9AAA81336FFBAC12ADF52BA5E91A2A10932B80D36259D
16B254BE56B6BF7070551F06D6F9DD27E63D8B384214CD956321BF96C395C504
5BB3F4A3438770BE4369FC52A6A2432877815F2B88B978827BF1689A2F397D3D
36705B5CDDD95E23D6B05BED5C8F6C881FA87093A21468600271EFCCC1EDB260
57F34E46ADAD7170AA0EC8A6036305F79688B885BEB03562D2E8F794CEA63B8E
03FED1BAA0FE3B831607E7A54E6FAC1BF3B1A07CB61FEE27C4AAF512CFEC400A
94AB6859FD2C83296FAE726C5D636200465AA3C3C39C33D59D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMTT10
%!PS-AdobeFont-1.0: CMTT10 003.002
%%Title: CMTT10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTT10 def
/FontBBox {-4 -233 537 696 }readonly def
/UniqueID 5000832 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
/FullName (CMTT10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 33 /exclam put
dup 34 /quotedbl put
dup 35 /numbersign put
dup 36 /dollar put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 90 /Z put
dup 91 /bracketleft put
dup 92 /backslash put
dup 93 /bracketright put
dup 94 /asciicircum put
dup 95 /underscore put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /asciitilde put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A
AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B
ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447
15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3
8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276
C81C9B9F7D4A68120DDA56FC6EC65FFA40DB78A60A05EC270A106DEEBD2CB92B
F0622BD2B1D43771DF39AAD3ECB655F317AB483F7290C148690903AAA636583C
99DE3DBA99EFE20773D3D8DDD816A28D7BD8881DE570BAF5C7A30679179E1214
FCFED81605FE56AEA21C1894167F93D648B474352A65C0756F812F97AB435ADD
22C031A21714A626DE35308AC51CD676DB1748DD2773532294FA77CFB2AAFD32
A72BB7A045F12B4934A768F89217233DBBD69B900B28492A26713CA5D61A9042
A982CB071F1F875718FAC168E4E275860DB6369B8114E1BDD4801110B62C3E3E
CF140554C826967A99F4E9726526E87D57BF845CE38E33893E5F9788769B6A4B
A4577C38C8D45AF2EDC9F4FA7DD9979AB8E14FF5D8956233AB4C02982BE8E561
C63B7BC314793F634DB6F086E1A60D9FC3B69D3A7C20A99FBF3CB028CDBCEB60
E803C8DC3C5F0CCAC030905E72BBAC052520CB0E40E23B46B2150DE67F61E4B1
8C4D55904B7F90DDE4A4A78B11AE1009DE46DA396791B1C0EA63FB6897FDFA0F
42474042E7E9B06A703A7C6E672AC6705506F3C0B6861BC85CEBB9DC9BCFDE0D
43F5248CD7CAD4B89835BACABBCE6C791BC35FE7211E775C009844FC75CBF6CA
DA6A6B7B488270BFAFFA3E9950914CB0F88C8AB7CDEFD2FDE11ADA7073037EF3
1A5CEEE37090F3A56D06FBC70597907A26498593783878C02722ECFD5D65903C
7D421CAFA78924DD27756853568535B02533C3393183D6E30DA6ED4BD6582E09
A5A4B4404EC452E91CB44515AC6124EBADAAE8A98D8A95E7D14DA39951EBC461
D426490071462F246794023DE1BDC04AB0F1834D50F748C3C60A07E1FB8EF400
78DBAB90B59500BD1232A872ED51928329CC8F06E83164FBB2D0B24222223EE5
992241E8E00D5DCCD6DB9A8E2325ADBE12FC8512AC127BBEABDA739672C1644B
554850CD75724E6779A7E76424CAF89E9455860E0AE2679231F4A535C0ED4336
313717D6F7A4A4DA833847A1BCFC7BF99234FA645F2B85C9A9AAF7108931E3CB
077A9C571E57B0D7EFD92B56C3AA4FCEC0BCAA96005E649AE8012366BE6E62CD
9E742F8F45AE4C96BCD73AD80AFB6F061D629ABEAEC3018CFF45E41F46751953
44E490B1355DC49C1E10BF343307263584091D122ABB1E3892E532B6DBAA105F
CD48375C112331EC5DB49E4D4CE2D126C9274B21E678E5E3EAAD4EA0CAAA29A7
86FD8819217B195EC6E40AF23ABCD71156656DAD38C931C8730715A2773DC44C
4DEF14D92C2A054739F27D7EF349A0EB76D952BD9BA169B4F85C09D80984D232
2CB4A3812BDE539DC79E2EDC7C221739D16B10246A5F57151C210878556D4176
31EFF3AB6C4D78C4F0DF81692B3C9BDE4F85242BF0E84BACBFA39688BB222A81
E85E9CB332868ED5B64E140C66E242B97A90C13B6DFBC3D285A49BA9D4BA1A47
64D83577FFB50BF974D953F42A249ADF9AC228CC4D8E82213FD463BC757AFF26
DF4D1678FBCD55AFD5FB3014C0380B2F8CA9D6400DF2AA041580A6FA5694ADBA
674286F00E531693DB28F7C996D5A66F80AAAF53001EDFBC065C72FA5BE3F114
1FA3354376AEF7374AE1D0A8E9B06C58FD029922164DC9FA09343FB6652232E2
2EE34C662F0092BE479D739ACE775C6F589775DD768B736F7391B9AEBDE7F760
727702E145CF749DC457B2E98A36C52416107B1E59084B5F777B61511B8D17AC
88386A7933CAF852CA23FE179B67DF8DCF15800755605847ECC0FD77873727FC
1AF2BA8BC75D30E26C40913771E528724FD7C5DE284A8B58AE55A5C48AF26AC8
02E155B8FCD6755D8F7F5A6F1AE66E4D24A13567B6463B18E65972BD75ABF732
FB41F87A62FECE9A50C697BCEA1E3B3DF1E3DC961DCA598220CC746326F85F83
72E803A4E69106EC5BCA01139F92171DBF9964BBEC8D3370039623CA1F927CBF
FE7DA71B04B4321EB4D3FCB27F8404994CC7DE5F26AB8FC019A203D6DF2F449D
85A4F103F7604986A1AC1F7D05D239E728FD6AD1DB5024B0A0542130D2B0E7EA
4432F910F9FD75568F5732EAC95F7A87CEBC359949C26595741533E952327791
87E42DF84E1064E1BDD3F5A6455087B8E9C783AB9ABBCAF032E9FA32C27ED7E6
CA7E3D1D76CD1905166090BD81A85485B9B4E976DB2E19A8E62EFB795FD6298C
9ADA57D5BDA2FEBB227F0EFEC59E4B51E06B8358006F9D79C1EFE92510D6046B
6AFEEDC793137DE622A8B3F5C9E3B21F29A98A589D9CEE75E348FD4D206415CE
508AB95A7496236AF1F6F5ED6B3ADFBAF1E35B51484F9B1E0C11C5AEAB9336F5
A8861ACE1EC74C4A145A64E4FC8F6BEB3A16B021AFF4AEDA59B06326A8D7FCB3
3B75F9729BFB7EEEDA8A1774728C80AED40BC35D42045E5CEEBBBEFAD2566CB1
AD69A9A972826DF0F2303BB232367E611C115E8955DC97779B1AF269B84574C0
9D816C88BAE3AACA6428CFC648FCF0869AD9236591E3B8FA326BD2EDE7F97286
511C75F4EE4F7B4DA33BA2CE7F778D92AE7C1B4844CAB3ED8FCA285454D78469
1639D24729E8002E4507A114407DF51543CF7DFFDB7E05ADB2D36E139F2DBACF
D90AF274AFB3E5AB5B38918A28EDFCF6EACA78248BEFDC2FAC0E041AD35B1240
B33191F5397FD09BD2B23112C25D27233ACEBD728E9B2D6ACEF70F13DDA614AC
12AD845A43269E2BA323A9051FD2B5C539F417DEB625465AD2370DE58D4E0C1C
90DDBBC85CC416287B4FD8DE7F41085412CA5A1508A9A383089690144F4DC4FB
B64B7D3E1AFE43B8CA67E55244940C3C3605E259BD02335B0DDA6F022D585A7C
4A98ECF5D52756717DC98BDC5FF425948858B33C58D1A6521ACD41B381CEBAA1
C0A3AA55193D46F5962C2C7F26589F5888F3A2BAA0FA4206601B580FEBADAD8C
34CD8AC20C07D8232B7E2EDEE184FA4D901844FFB3E8F2629CC1462B42CDA11F
FDD31DBB41286064731E0D0677CDB3BF5A61BA4171C2A79FA9E8D667FC547BEA
9571408643C4383979354C214CF6C9D8971E91D944791F0E6B2EADB55E4D1356
66A1D81D0B769C30E3E7672B22170177C015F8B9657663B486648801252DBE96
AA54E5068AF986D8EA010E158F07F0A3140FE739BF702ECCBDD73F65353D300F
50FFD9536BE94A080A36C9FB22EBE3E60FD4773B6BCAD134DCA14E30A7A429B7
23035AEB6C8E5EA7A79937BA62F3B99BE1D0E72D2398C52B32E55823AADC7CF8
DE4435F908959FF59420B4038042746132994A046C678FB1DC065049E1E5794E
DC638D83EE32D6423E07B092D82CEC388DD63E05E9ECBDBDEEB34A56DFF67D10
1113B0996774C5EC465A774C371547440A4AB91C1A64419914ED7D27F7175331
A0CA4E7F6E85D9BA778C26AD642AC9CAA66D8605332DD7EF702B00E46CEB58A6
D51573013917544EA4219777E83385E3DF69CFA50DF2AC71C64036CE75E24738
3A2E951CF750EB4D28EA85F95B13C30825C273091A568A69537BF03D70272A6B
1E47077D64054588403AC984B9A80390C866A2E2DFB498064555EF3D4D531D10
669C3E830EA3E0067B5677AFA5BD29C94B5E0893EA14FE874B911DB192F0527D
646E7206F79859D5E6EA4ECE8B26BBA97BB791BD7DA4F7F7CEBCC8B04D00D920
6D2E4227F997936A16C683A0AE11F059109A2E679244E9776DC9C7ECBB0BB73D
D9A149C90BA2C69AD26F9F900323DFF9D04779F53AED156C8A8647FCE57DEFFB
863B8D148E6722A9077DD3F50DF532094874AC6682680AAEADB785FEBB7F3B12
1FDFFA94A4BACEC70943405DB37CF6E9E4C7EE51977A803035E06AD0D3B43734
C8B07ACCCA764DE24A841023316C84CEBF6A2D86E6382281856D8AFC9BABD871
3BE9E6B1F99262A2BC0C99138A5049C44F2527B02E07E40B9727017F30E59AFD
9EAF7590517673069D0D5D399446C5D4DA1996CEE93112B322C35290AE4C14E4
B651FEB0CD3C9A845F5AA9B6C6CC7548895DFB88574F89AE4BC8DF6C94084367
40ED5EEC51173B32A02B6DA16353E91D07EFD2E034DB0A4B57608EA80C56D975
9DF0B73BB12A1FC8FE26C7B5486C971D89217E6D45760045255531E2579830FB
B4984CA52896E88D964BC91E1CD3B3CED5DE4861F98DEAB97979BA9A30F100CA
027362CFFDD972347B466B295D8244F99EF1A929E54F99830FA62F0A11D7C279
D5D76395F83D12264B50782207C957324FE35DE6C03C571A0C0E06F1AE3A6C85
5F8AD72CC806E2EC0BCA6128524A9FA3EF41B372968B0F4D4CDD2B5E5C4FE3A7
27D0EB547C3F34CA3BCAD92FFA62D761F21C4B213C9529C60D4D83A4AC9BBFE0
500EDD6E1F22E53E1ADFBB8D1A0FA4D68668E7DF7DEE87CC7A6E55AB0EA91178
3B46465E041B262CAC2C775B6964AE59F1352A98F4F6D6FE648DDA8C1769A333
0D35A6CFD30357BC2D059D67ABF7E1A4C78246AF7E9528014CC2D36E12379284
C17974375E1E4ACA37593C07876312F2BE5018E71F85E140BCC45EB4BFAA7CC3
0FF2CAF72A76A0788108BE53388ED11FB521CE8C5499F528ECA91F2A21EBD10C
1F26C0D816DF93E840052230356507BFE615320D7C856332A9DC966AE7960B19
95C50BFACDB6E824E5E05F6F21CA855CCAA7991F052F222DE81361C6CCBF9BAE
BCA4BB3E293FEE1A4ACF635AECDBD204EB5AD40926DE56664B67751E90289EF1
005DE6AEA7BB788D5C1BDEA4D2626A0AD6FB4DCB5D4F5FE3C3B0ABE2AB39EC39
0C83EF5DD92D5458ACCC7CC6C23E930E60CC81636BE65CAA56A7C552DF3AD090
F41C8448DBBC4785B2E5359CE5F4B5458E0F5D5BDFB191B5E11D166CDCD979E5
71B494C2AC013D908F0786751D8E4921C8D3AFF9A2640371F0037CDD33A5B239
5427A3F13FEDDE7350199E194CBD0D0367A32B654893961B696E27248EE1FA2E
D4C6128E66526AA9EFE0693BADA6F4196A617A86AA1667503F45B430D50D2187
1922575245D78C0E696E7301A6D4C9A2BF81FD0294459432A5B46F334A1E9CFA
D0EAFCEEE0127679E963B04EC13B8C81380E5F68992E95314062767FB1A7481D
C7268BDDF0840C1BA24B08335256C46FF042661523EE084DBC7F05ABA12EB45E
BD46ECD92DE2DDAFC372498CBDC82A51AE32A4E3AC7FAC9C2B2FCEA14C18E2B5
8A2182F6188B9EBDEA3F0288071552D838AFF8F28D41E13633EEEF3DF8EA106B
78CAB5C69A6F54C5CA0600D151A5FA476183D2EC55D4AE76E856BFE0B91A8A75
6D9FEAB2BEABCABDD42BA4FA9EAB6335D036B99C7E345632F2557C5AB48093BC
2B01BEADFF47D830F7F724A305C4DB87B0F44C29D460FC45B1525EDCCBC9C566
CC6434A2A4767FF5A35E0094097E9A0CE33CD9D09310E77F84662E4870C64BFC
11D2D1E263756EFDB365A2F6C9EF4E5FB1F493192F14F6CD68C35AF59AEF138E
60665714C3AAB84BE8A44AACE61A940B2274EC6E48F0DFB2E10870A423F84636
8C6C1F4EA85F9560C3190AC388727BE054B2A8FA80A18F3309CFB0087553CB4B
75A3A01B7676B26E92C11B85C7BBC51B8E7842877A2C5FA7CBEE7CDB00123789
6159D6A49B0B7D5503C2096749F69526C2779388AD5CD2675B5087B5DF61197B
9FDEEF9AAE9C98B8DD71E5B2AD45CBE9C6CF84E39CE3B1412895A86B6A016279
EF39755F2F1F045B62CE8EED13A9B05E445D2C8B781987E5DD891070AAFE3F8E
76F9B2901111D4094DED65E0631AD91AE2A497BA0322EAB3978A2405CA6CE376
C1C51461BB73B990EDDDDF66F4C4AD9BF1F403AD130F104D67A7781839273653
181EE49022707C03B0945C08271CAAECB922893F0050270F2BF1AFA776C78DDC
F2B55A1F80184F2A26D230D42131E91A53A536B5238D2702E8AEA9AD5CDD9E20
D13B7D67EA0C52E48B6FB033D2BE976B2EDB855FEB8D9BB4BFEBB0A96867CD85
C04317DFDDBDACEE413EAFE6544CB5CE9DF41E99AC8F9945D8E303A1E86F2AB6
A12E5E79185B7C1DFB6DB8FD9D6F93B34165F8B88D3993DF034507AFF20DBE60
72D3329495A1AB31BA5E057D40C10BB6B0B1CF50F1D07F748531DC0BF1011195
07428DB85302235746CDA81DF9D05F085EE1E452E45FA115CC80E114E4D1F5CC
36C6266733E70CB2EE8C9FA7F641A08047CEB84126E1B8723F6A19B637D2B4CE
E73281E6AA7964DFFF6002BFDEB7D206DDA4BC7CCEBC5FCAEE8DE9C3203ECF73
56082B0B67F2C3DE2B7A30B839E736A96CCC8F10515C450389C37EBF7316889A
602D35C3DDA74A5270D5C280CBBEFD3ED473D45E068EC4E011E4DADEBA005914
2DE2C0854DED8C7DF430FF29F3E454442645B646A1718796E9D5910271F088D2
522DBBBF002D5BB08A129AC2F716E57D31217D6186E05A410F634502EA74C7F5
8A1DBB0F5B35012291FF58700C3A41856C8351BEB4233AC8FC879D0B1CD0CE1E
CE50742ED437BE8F80280AEEAE20A7C7C2770F6AEECD7A9F9009207730C6F05B
42ECE0F1B464558D7487F5143FC0E1B7EBE675BC48A18C0C34A99404579F99BF
ED16457F3E0C800434234257AA531955833AD900928626C993955299593C8495
B084CA0AD01EBDDE91E49EE562C961D3828F38FF1B05D977DAC40742AA7AE4E2
A153C65511D055BA412F67425D63B303296F3B9C4C4B377099F265646D101B4E
117C63F22CB46BFF21081B885853610C36A2F5BE721BA16AD203F9167F60B7FF
A83CD5EB56C2FFAB222A1D3B9210B8698863158C6848F0FADF096831557D9B81
A0061BA5E1BBB75FCC178EC4E5263CE0FDBCED4239012B64808BC85776D70835
F713846E6C17D92E80B8A1DFED2CFFE0962B5FE2FB7CC764DA214977A03EB01C
CCB1CD127A23C5486A8115BB840132B3D568D9EDE75B7A0AA814ABBC47854FED
7F75B0EFB6A2C9B19CABCB0334F70451A7B03662DD83ABC273D16D79E801718C
7DD2B8D033AB828E9D80023B1024E377295E7A660F894F128B9380E57CCE7DE8
F842F80F76BCBDD52EAEF474C6F368DA0B30648C46E13121652CE16AB55D78F3
9E15E6210751706E6EF3DDAD926FDC49C13CCFC3436C9B01008F8D656C0A2111
8B21119342A600757477D5AE24F673FBE2429BA7A0BD4A3AD41ACB26D732FD54
BD3F5499F4EF2CA22F29ED773A796AAE0E8D05CBDD3A56EDFA1ABE8A8E3C631F
7CDB0DB86B5D7345C7CEBAB208702C6E19D0ED09E26980AAE57BB17CE2A98477
4628C86F7336599DC729B04C8C5C4F0E908D6135434598BA3A1C594B46832E3D
866A992F4382C00C928540FA636C958C807B2BC3CD4BC1F7C6A79F8DB58A9722
CD5D352FC5B0B8383ACFEE3BA2072B5A66A5858F4A7CDD70DAAA4A6088CD55F1
561872587AAE330EF9E76619AAB72744C83D29A51EB86C057D0F5972E5C31FCC
4A34175C47ABDFAE5311D2318126FB8F15AE8A40E609CDB7ACA07431DFC2DD91
30765EA0F2DA53F1C9C6459E18645FF6BF92FF9918F860151D1C53E8076239BD
1FA4F932A7EA9589A439AA3793B4F939AA349A2DB6F574CEFC3F0537A18CA734
6CA31DEFA1F46A0D93B0A8092E176ACF3475136F03D66506E0B4814E0DEBA2F2
0640483BB98FE5AD51457A49387EB6FA7CB464DE2683DEFCEEE7754322EC3D75
BE93657480EE0B205EA0764C411F2957048D84137E27961DDDA720B972697AAC
07A00FAD82226F92DCCF48E9DF7BC311D9098D9BD2069BB306449EEC97FFBD75
202C13B602FAA33F29675411D738AE1F3DC5C97641F8215E8ED4A28904C06387
EEB28B2F6C0494289228512B76CC04B6741C6076C4FE2C42D58A28C332E9FDE9
289001D2BBC1A8790D7F1FAC88E645E1D3B50C1CA28B24A31E14025679A61250
67BA993BB3F22CDE012A9CEC30F66DF165A53EB4145850535DA2E17F27E7AD30
C2EBC274B6D9388B8B58D7BB242581B22AB5ED916276841540EDA6001252565D
E7E0FC7B762602133B335FAAD00E9690F90747675CE69B17A789DC774D8009FE
D9D4B7105854A44B634A56D4266E3AD008A1F78FE23FF876B9F8A640E2302C70
AF50667B3D4B8954D01DDC88BC8140462F22B67EDF59692BA9A70B1E6DE915F7
429567A130A730A359F58388DE4EB4382EE07D03CCCE3FAE0EA6391A05A3F255
B63DD8E4EE1F8FEA91F96EDAABD436790E0DA067F0662CFA8BBBEA3E434171BF
790C78B3CA0A3F4BACFBEAA9B18E5FE5B266A3AE06B85400A1B90902EFE6BB8D
76D07EA68E0AAE52FB0D6B15660874A3CE6AA275FD279CEA98BACADC5869A3ED
0E11200EB25B9760D1795B7B261C9144BECE83D37BF4C3FFAEBCCFC3554D6CB9
40D9E4F20333CF18582D379942940574524B17B767B0405722EDBA9A360D2C14
C4680EFBC0442D6C35B5C0DEFAD773793338EDC66E14A05FC87F7A38091DB3CB
0EF6D9F2AFEB4356B5E024ABEF34EB7799EF3A658BB58F6FB1D43C792C3816DE
A1A41493FD6C4FE088F02379292015FA9CCAC621CEB98F8709AADBF331027B17
B236BE24CD7AE1F02DBC0064D65C26C3C0929DA5713DD9C0FE39EDEDD24C4417
D36FE80291FBDD3245918CA105AD4E52ACA28BA901ABBE8D416A53A412921112
AEE6120650FC6DA122D1B82738BF5A127633BE6E2044F0104614AFD80315251D
D086A8D2A91C87A545F61CB01CD289CFE86ADC1A5DE5B1DD7F2EDEFC81927F3B
0DAA749D888E4FE9B6EA80B3E0A2F5E9721B6F81192E021E2705ECCB1F92AB50
D51064B847A13AD0F32B1769102B0531276D47FC621D5660D4436DB33E028F9F
EFEEB9953010AB8660E5C9F531E242D7873358F6E6B713478FC40CB42B9A7D06
40D8558706F5A5628BE9842BEE345E759EC581ACEBFD70A6CD51D412A810C00B
8ADA276E44994D72AE69AA71C61D1FAA8456710D603D30B155F6AABFB76DE963
386AFEB54E41E450C65E6F0C0979855EB117AA0B50E8FB8C02F2973CB5A53C34
D2E7ED301619A8325C4F085454D451BCCD02F46AC1129662EFFDFBC6B4600C37
A51490A3619DE5ECA9003AD60D601154F03B7053A8CA9FF2134C5F2175DE2120
76226AB000F940193F4D0B17EBDFD9247B85FE823DE740CCBA6D0CEF119CE48A
44AD0A5EE0760573119CD4EF9FB0C6C81C6826A24B88B3E3D878091FBD73B117
0F8A875A96C13E2F328C28A482C250DC5871C5232F3AC55CA4F231C71DF26715
0585A2F42DEE145A6987ED34593DD1A62C731D15BE51CCD339D52845AD9896BF
90DBE789D5AE81199735293C113E5BC6BCCBCE4D9A721EC3E4DA08ACF5A4819C
986402BFCC14DCBC35FBC26252B9BD83BCDB7AFA4075DC58E1CCB295F542F303
FB0A8F54063D40E435DA18E845DB2030D62BCEBAFBB972608132584E6D484E06
1FD48230B808A8C67AF8AEEC2C48822C588437DB547A734A7169FDA7A3B347D8
B59BF7447DA941F25E502F0C3FEBF9D1132DE2FE4093425CC3CE4515D00CB74E
85AE8C677A13E7A54CC8073C841E5C8F32B4B967EF7694054582447BDCE42E74
9B07C2140E92CEC205C25B2625F070461422FA1077941A1ED5F1CF6C218CEBB5
AE70ECA87102BE081C33626F0678F82485CB1DEA62D26C89654FCF294BAFB0A7
4DC08F22F7993016648570008BE8DB1EFD7ECB6A3147B3A23EDDBC413039004E
7B3ED15CCCC90A4771467EFE51E795F464FF11EAB2B813118ACA0FED6EFA734F
2532D136E26F42623A52A863BA0CFA773109F261A97EB35DBDA81768BD5F13C7
2668C6DAF749BE6564A1F81947F6D224A5A9D792AE5B783F95AB372F71305CFC
29F5A86D98432C0ADFA5E448EB06D022053BCD2D95E7611C2D321E0E53FF9C5C
670EFE6732E74ED7DAA70D1F18AC98D8D975E8F82B3903A16CEA2CF34224E30D
65D0E7E05A991E5C98B8554F8E02C7C85EADC34E9C879B00570862CB7AD01F85
F6107E0A3013F98A90E972FBD3561659583B08455577D12F25F5E74EE2474C94
A69EC94EBBCCB05FB90FD00CC773826A7EE5FC7D252AB1748847E38C8F50631B
42E0FEDCD88D4C47E7F91B74EA3AD2E26B57E6674C78EB74B6178B20B27FFCC1
0594A99352D7115AF251222F772D66892BE04E44FA40EDFAAB219628CF4D5B83
746EEED9CF0F84A19EBF3D3DFD8F33BAE2835C1E6E57983B5D9B3FB0AD120B7B
A8DB2C3648B676F02D98ABF893569C55D5102E772A97947F6D85464AF35BF392
1F0B31A8D4AAAD549FEB9409B8EA47605D1CBD9D50934D6E14D282AF3727CA58
CC4B26B63D41755E802E798A1F2153FC12585BE8BDBAB3991AD188CA10DA3F55
F9056640A1F31D0242A015938DA000ADDFAC774FA6B5010D4647E13682290E2E
48CDED102CD6A4993C9858F0C7E3842F1C3FBA14E431D068BAB68258C10DE1DF
682EBB96525AA82E20EA1E4E124DD7630E3553EFFE0F03C3763A776C5D64318B
2BBF007C0029ACC45615D3B4E77CEB40688EC755F2A1606CDFE4ED8B1B5D4515
6D9582137DF6358A8208CE99B191999792310E3E9138DCBA4E726700E4D0C4EF
016EBB22A37C4213BED2822EDC5D5F54C40EB2D22A92E40E63D827FCC8A24CF7
A802576CD9CF3795892FD077CC77DB908564E4944CD852A3C41466E0683F6437
BF3CB99189CAF2F3D7A293C5349F494200A88F74FC900122A5E6DE4157BB22A5
2041988C2E1FFA890A4143AAA8BBD5EEEE9157CE5CAD36C9A1B929576C41094B
1F4BDF445A6FE42CA871679B1385BA5088BFF264500DB66A1AEE0BF19810E27F
327D44DD4317C307C811C38864698A0F0F93F9DDE1BA1B7B00D469645A8E353B
9307B242284689AEE0675E9C6CE7ED473ACB90EBAEE98BE4E336CC926D952D74
BA108E306C78B1A91D07F7ED434F37B86AE93C52081C696B4BF20053B340BB3D
961C387DEFF21597F306C4B741A96D98DB7E7B8D835889C6581688EEB62F6E3C
163BE8E23A7EF73B87D41CB4FE29BC6D23EAF95A258B8FF77B832EBBCD1B4645
2FF147D8B3EAA3F930231FE68C357114E9B7433B34CC96AAD26540792628B506
452359AD152CAC44BEFD9F9660DE8FEC6D6FB19E8BD650BFB237E9501AC91ED8
F6EF73EE75E5BCACB151AF904AD4D476523E7504F0291AB8DDD14437C79E6B4D
DBF914075E3568A4755A04CA0C42E50665D8ABA4D83273260D3020063D02AE1D
8FC05995D51B8C9A90DD26BB3C05A6EE022E69F2E59362C07D09CF5E337E94C3
6672053AAECBFE391F148C575A8C4BDC3EA5E5EC498D8B8C31733E0DF0638D69
4A5BC67021F8B3B32199C6A36B021ED18B113D6E1DEE67D7C9CA6336ABBD9E22
93C79BEDEAF3ED5BBDF5083A19705A33848918F66916F8937AE3E2B76A160487
F6CBDEA233B128EFA70896AB27EAEEE73AB7BAB3AB9F856E924D34DB474FFE9E
FED841710AE8A00345D7DEA9D92D4423550B37F6D3855F22DA2D8DF65A99E569
B058C4B4BB0413B844DFFDFD665385374781CB3B9AF1833591C22D4FC7B71BE0
329E06E9610DB8BDCDC0A319EB45571B2CA8C1E7FE7EB46410AF9BAEC3867949
264F207EDC23D35E402E1EBD41B8FEA39BAF4A2DCFFDD6DD7B0F10BA352D91D8
07E4A7FADCB8D98F59A08AE999157809B208DF0FA06D47DC568DF681FF72AAE1
7B37FC433C7AEEC73AF11AD7EAC745BB7D6691B0920B2B78CADA825E0BC5D030
ACDBC0E9E5A37B34D796FA5A2DAEE16C7F467787D292BA93A5FF4DE374BFBBED
DA7E28361FE2071F6D64FDA8F4F97097ACA617A3B1C0C2ECF71DDAE8478CCE80
D97ADBACA25E95A43084465EB30234C653F7266BBE0EA83CE96906D8C5D03F7F
8FDD490D7FE1D84E6BE16F9E10AC20709FCA8AACC1B8A8A8A566EB46EC51BAB1
3BF501E4B079468F08130FF0BF3D2B786F71543C16B7BB173B8D1329A2C65A69
C5ED57B225E7774F694B44D1ECADE5CF4A53B2315504DB62C2F8E2ED5321B19A
494103966108C3C60D5B246F8FCEE5007D4DD369C2E2CBC8076019CF8DEC8891
63114D54F0C8B58363E7043FB422986FFB468FB3D978A0E326D6967CBDDA745C
15348C665619F41AC20591C3A4610C4190100E753B621C08F9CC026BE5FE3654
E37790CEBD7F51AB4F187C19641865234E54A5720D419544E7EDD0D718C5592E
EAD0F2363EC919871D7FA3EF55B1F89C176926F360586A5C8C5C205F554BDB1A
D25A28E7B2335616E6AF945A8F4D81BC0B998AE317B36246B8361F639E308272
58FEC15DD63172C4BCE2C57D7711AA0109673D6AD7FB5935FF390A9BF9752B84
54AA0A4D5726691D59620F66900EDCE15B7B332BE3E198C3562A351299D0E8D8
F655F492587525A1FB2EA800268A800C8F7FDE34EB732312694F7180247ACCC2
AEE06ECBB1972DD04B35B46E7564AA7B265DD4E1377B9E3198FC069C67400AE5
C707F1A990985D93906B1FBF31ABF448C926AFE10242CD3C1B314598F98A899F
33B9C031F4FD8ABF398E13035EF7A1A3C1370D98F60038A508E7D86C06C6AC19
48982631E4DD41BE967BC5B1893A693E46860A9E0A3823A73B42F4219A80096A
04E7A736E423B0DEBF67C4E5DC0A49F6AE294B152C16ABF8426D3845D886BF29
D906492867AF7E0297D62911AFD504E1AAA7B9EFA2A81FE0C58C8A9A44D6BE0D
05A751E818DE653489C7A71932AD98C0F0DE2619DFD1C690F29287F56E14E2D9
2677C61BA8C6DFC1DB65B882C3B3D02964A9D835213F4E37EF48C61E45A3DA8D
17E7C45ECD56CB63F1372D99817A40CA9705A02785F9173509680DEF0A484A21
7DD6B88ACCFB9483E9F7B11F08B580B1C76C0D2B9337927694A23DB941C2EE08
A6E8F874BEC2F5A0E18845791B8297752731F994FA78F6D82EC09FF8EF2FC7A4
400DF95C31487CF65CDEBBD4BD866647510832BEA0B9D9661CFB8F513AD5954C
0ABB6A70841E230C19DC4E1B2B4F8D1421BC5D54782C9A6AAD8AA6CEA14D0A5E
0D66988D9CBA1B65D54C779BF5D79D5A9DAEC89F5551A50F35C316AF4667D96E
1B7476A500E6BE15C3525A5D7EAF873813D2207E1E5166444F1BD0D52427EBF2
445483FFF53E7B0ED56AD4741F99ED5F37E7141CBC1C23EC7F69A476C458F327
EAB3A290A1BB29D1BCDC1D2FA2942208E102AC9818E22E9EC10F2F3AEEF94BD1
399614049D1EDD94EDA791EBA2E8D5C25A7449941098425A7A911998D3F9F15D
633C05A5355167A1196D0C4340AF63CC3D268CF99A692C94ADE405C646D19F0B
0B1A8530615AFA7FC4AAB63663D90BC517A3392B9499103A4F2E189C57322879
839C898DAF180FF50CB64A3D5172671A2B7F3B6F22307B1B10D233CD138AB41B
945692D447F0E8228B337F45E3871A224466DB6BCDD2D9B857B2C359D39745C8
C1836665BD49218EA80E4BDAF20B5B889D1578CF0E7EB6FAAEC228886F530BA4
F2806B4851E34349A8588CADA96A3D70C51BBD3DC1CB0825C3B4E3C72286C053
D10BDF61280F27AC3DEF4ADB164FE4CB2EBE6E1155C0A437315CC818237C8AF4
FE4776C1306B158683FDC03838F66CB6A3618EA101BDBE131D8D77DEE97B10B1
CFB45A1B9E13E4B02A6A556BB8B78769A410F13BB0C3BFFDD6F776E19CA0F03A
217BCDB2EA78614CB68F8B8141F38FF7BE62D28458B5FB08734676B36DD03A70
A1843999E4AE5384029901548D01045972AA77AD5214FB345A7F47C4A7480A58
BBDAD39FDE66FB7B2C0EF82AC9A814D3A1298684923374EC5E92F8B52B1726E8
EEB56AF8DEAFBB31F4D1090401675DA4EB033C6905C784A0205D94F0A305F1B4
3255F47774576908F0C3BED7D3438327E24EC145BF5BCFABDBFCA47D40B77029
36431000A253860094BFD836DCF19E6BFB5FF75508CBF65FEA900382745FC2AE
EF968CCE1C6032205871B023892F451474E5379DFD5F885E428FABEC1DEFCB4D
2DB98F261D3C039591905768B03BCF8588618F386C8B75F2C2B1CFEB5ACB821C
23474D93C05C07B8D88B88D0430BF19BF699C9D649C1ABA7A7B4FDB7B8E70A4C
8394B27AB99AB406E334AFE0050AC566D7695FDBBF508E93E7D22121EBA505B0
F1AE5FA3B8F32E1BA971585EFC7A2CE5513CE410748439522542F90B380AB0AD
9F1527055B7E2A559E1D3735128D02B96EA028FD5DA8727E33CE3822A44301B6
BBABDA3192C650FCD7D1F89142A5D47544C19458F86412D6DCFA1BABF3CF4A80
AF980F44F7AB893A9D2197BAE883BB672E63C3C00CCA363F5C45CE6BC30BEC6C
8BCA685F08F46FEE281A42C171FFF3C6A1AC5E551C659C6808E76FE3B7178792
1F94B67E7E100DA039040206D53CB9366F100A637FC14350869EB5D2AEC8DBBC
E24FE1547A3C7D3CC0E8A48EDEFC323D31C026792AD179215E7FFA45F18D9585
6859EF48E7F6A90A693FF66A3CC8DB1C13A75E722B3CEF084079D8E423ED67D8
077EC4FD608EDC7FBB8121E59BD2B2304F54D6540DC186CAB44E68F342836E8B
559AEB63C74E0DCB9A1891F1D3628F5B34AF42617385F3CD3B28B585C21553FF
A2E96A984B1043371A184D83AFA58B0600E291B50A97E114C507E56DF287386D
B1FA3A1C3D62A89D690481412D3846D17D12224C971DFFAAD2F99244B3366EAD
4E46C7A4B6551ABC34B99543E712AADE0AA1D56E8EF3439A5BBA78CFF308AEFE
71C3292D3FAAB992A98480B3B553A7102156FC99CEFB5FA56EF0CF162145E5E1
18D263A6598B436C0190DB08CEE27A69D4F5A7B3B9D740B7C51E5C9149FF2629
BB8568FE356A82BD8B2E6905B03CF385AF23E961E9A6DAF1A7B2034A05608971
E9D56EB8195F133BC99502765EE811A4DAB4025733606A888224AE875FAEB9AA
3B2579585ECFAE0C90E1BFCA9727F7CBC87CF62D35C4AB3657235C3A46C38225
79FE1424CE94C3A3D64F1FB8D3D673ADACA1DC48A0E0726753818924A4A186EA
34B2CB2492D0B8A64516FDB920DC59E1AA8FFC403D852DC03ACEB1E33DCA32F0
737CF57D4665843BD6AC9EBCA63C092035810CCF5ABB9262737F2C256A4EADEE
B450387F9326EDD7B4242C0D981F8BF9D7CCCE6AD7BD77A96058E2B9B1CD0BF4
C4697B977AD1422661E854176C6DA938D17CEE9F3A6121BE465803C51D56BFBD
E8EC49553DDF8127F1FC35DB9C4F0AA3959FD17ED40E850DADAE2AC870E5AA53
662019B26B3E6EBEF1387EA4A60510219B9D0995F8504945385704D6FB4E93F4
1125F862CA15265C1FA66F440B8FB9E5B33433014EB2A517BAD771FA7DF8F23E
89CD3E58F89DF19776DBC3E5673CF190B35CF68B5934C0EB37558FC14581FA56
07CAF596E51991008C035194B7FA9F150E30B53A7B2117BFCE6932CB3929B2F6
87232470568A90CBBDD9B77C77A7966AE1C84FD680681AEC09BAC06E39688AE5
4DE2DB3CEE5F0B072865B5CFF15C835C9AF5737D9ED19C1501BCBBBE909F0EFA
978CBAFE5A25D203D8E630B36740B22E854CED07D73DE75FD6C1C0C80417E0FA
BB6BC4AAE6DACBE26F499B8B69B958DEFCB7BCE7ACC9F5E058098170F4FB9E54
DE12711C4C3A03E0CA3C1EC7AFCF26747BADD5D594A901E31CD42DDFBC50655E
D669003E1D6A34E98C1A37F3C2B05A0F4E331390D4BEB19372A91BA3894FB886
5868375664253DA120D2C094492E7C0E14EFFF97A9825F549B5FD8B89FA4CB6A
5FEA11B2E0293BA22D57FD4A0150902AA3729D81EF74D6AF88D6B2133CA24B68
FEC7E3941B884067B53DAD429CB7ED9FB023A5F693D1FF1EED9A6FF32F20F947
5A2FA756EDB6621DD7DF077220C96AEB910E49A2B4CCCF82A02DACB0C42E8263
7F0E76DFF2F21CEF6628EADC5BB5648BF82DB67FC39B0D0244A0BC0B30A59B8F
76A7594A3D2A38DC3E6BD9CD05354E6EBE00448D7A7B8A5C094AE8D756151870
EE984259842C8D2B2AE14D8E3C1FB010DE3B6996499A2426A124DC57BA152304
D2467D7F3BD9286F3EBD43AF7A51079FBD7770947FD252FA6264E78B48ACC9C5
CAA45D69784D107686B57E3CC94690C09B47CAE7845398B2C480A183A771FF94
39B68F3FC3DCEC7059DF57105EF23C92555131F6D1F5DD509E1B6AEB3A4DCEF3
4F6E660AE7C859139A1414839CAD6380155F907BF0E607BF2710C8F3743A3E44
558DD7B820D8B9634E9183D0EC8B93297E33C71F2EFAE552E2D8371398CA8729
60C6FE5B314600A01053279AE003D4470756977366467B2C843E267BCC69AFCE
5E5297ECB2D69BE6EA118D486F05CE63785E52956ACA64662A962C5148E96C61
346B834C2401B2A61A002A9738C28120BA7BCFF64A84F85D2F23792555C345E4
86A37AEDD3C06176AB27D3CDA4FA46EFB1897C5D8827AC392F28A592DC1C5143
13BA138F0D8B27ABFEE428D062538FE6BA62D2BDEC73EC3B830825E12E69D1C4
CBFC07C631BBB7AE9BC8F8BDB25DB7415C7B9D0502C734FBAB387E201D1CEEDB
C5F72A9FF2328DAECFC97A3EA1A75E7C7CCF1B274A3829B9F71C3B1BEC03923C
F6E1E5E32BB8CBE6E71A855F1A7FB01A6AD8959A4E7CA24AED8F8E8B50967EDF
E32A69B846B22F7A39D36B8809005E70C6A148F861C9DD68986677F16FF78F10
B479132D9D5A4DEA428B5F2F360DDFB20C99B653F0F5C2B44472F947FF0F981D
DA1317377C9D2B686A583814170CF417ED89686E568B1585A8AC08A5B6137695
B2518B04FA646222A16B167CFAA29A59C9ABEC521868DFF306DE1F11715F16FD
79F34C80F3BF298AE6ED20352AE60DC029C41552AD946C6CF7CB95F9E8B8C4A1
7107F9BB0C5C9347D4669F4BAC9DA73D798104C9116FC8E1D10FC2C01AF559AB
4A139BE448BCBDF113943FCBA3781DC6C0FB26637AF91874924BB9568BE0D34C
71CBE4CB7CEED092D787C77608D3B2EC8137780BEA416E72DDAB37227A75087E
DD680558A48CB39B804C795E4CA1642149C488A97186CA640A209F1D4DFE0F8A
AB95DF6289C9A8490D3AB5B7C2D9F869665C9E163A58F200C3C97983E8D52E0A
7D7BA1DC68876C3DA365168C1674B44A9F6702CE1BC29C5239240AF0C98E88FB
64ECD020A7063061468DC709BD3E1BCA4E93E3574CFC4511B3548B5B263ECB2B
C11543731619C381177C9AC98DC17EF0F1EA4D1A657A58136D873EC2D6555B70
1B62409E24897A3DB5132039914365D529B476CC5587B1773CEA7C6BED50BC79
35A2D753876A555D29273A8387A0E7BF81374BDC9B68A4EEA07E3A3E68876AE3
3443F3DECD2711DE89C23961B364E650317DFCABD116D9E5E7476D6168852B8E
945A52C78FF81DA9CCF9308C08C11438653AF10D496C82E6FF8FACBC785EFF4D
42D053AC59E4E2869CF0A44B71AD9422D3C10F47DCF39CA5F57BF5BECDC098C7
D011468870269798486A67D03579A843222ACE77AD05B05546101DFE33B04237
EF34690DC25DF3B937113E46C233599F73B00F1C01DFCDC08F2138602C09172A
63B0229F92E494FBBC896EE5B16BC65C990307F74B506E1BFB8C22D3FC4BB714
962E6F057604B73859CAF2E14FAD61F427364992092D8CCECE6D0E51676BAC7B
DA24651A425A61E74040AED70EA59FABA7035514A0F8FDE6DFB1B43838565702
17B9C8C8786D4C359FFF347DFE060A91FA81932E96C73FEC129D1C5024570262
FF1C515171973F908B4FB47B13A5AF652072A270ECF4A00402AA0CB9DB91FFAC
B54DBBDBF179BD3E3A9B67A3E714F7C2A423A61F3AEC621C1D7E31C0398E4F22
FE8F979EBFD5B143C3FA34E11D5EB1688A8C482D3ED2099DE89BD08069678287
8FFCDAC7C19706F2288F51DF332B96106C6B7600C0BE4F8C89D013CD7D779472
EAF9261E10092901566EF875F29CE04D8C6D8ECB37A7096078BDF6DD5F25348F
9E39DAC89EB8A3DF269E7A7178579E626380EDA7E5D330B2639731FCF802E2E9
BFA9A87C1685656736F55EF3769FA1EAB28933073CB87621A6B8B9D3D2BC4A98
61022BCE0E35EF358D903FC77F8930D2CA2D663557BE3B573EBB07E2140779B8
9E526B45BD4896EDF8229A02DD4A48A0AEAF7CB14679238B301370C1ABB056F0
C37D9CC91141B5E855363E0E51345F4FC983345AB2057F726F0677C7BF6ACB6C
AEF80CC2EA9C976206FE0B4D84795ED3D5A4588D0C90E7ABEC97ABCA62A18F8E
1814E2538564B4A07A82C6758BAE9E8D37DCF47EA9E8154B9299DF7A51EAC45D
BC4A341307F1A49176F83486153168BAADB77B19D2B6BE161BEFD021722F44D7
1740E3687921E12D64AAA3744F9457E83A0F7B0459E7E046E29182F0286F38D5
C35449E6849AAE29E612601164437702FD0BF9BF2331612F3AADD906ED5E7F26
539AC3A8F798F447076200C0290D58C14A617D9A072FDF46123F89F21F0EA20D
71F222AF6AAB681CC9BC2CE9E1F37D489C73E8E628B0CE90389C1BF15FBB82CC
432631F956C85AC52EE619CC864EC00F4E631597691DFF1905D1CC16C78749FE
9F39FC04257224F8E8B41629AA9A71827D002361850AF30D1EDAFC58E323E361
D3ADCC591BDEA4D2626A0AD6903C6814FE57E782ED040FBC2CE140AC36336CBB
C17BE07B5CCC863940CF36853E0154113D625788877329B9C4739F481E8CA942
27B2DE3588F60EA297BDFA0F3EA34E275455988892F060C98F91758EA4E0B0D1
7170E0C4FC9E9781A6875512E97E81B7373A9E352BAD9EB00004CBC4763871BD
BD54D005815128532889B5ADC362B1B64657910FE5FA3DA3A8DCB70BF46C5598
B1D844B4EAF1AAEC9BB44D37C48872A9307BD5A5FAA4A4DFF81CE7D2952B9676
6126C65726EA85CF7F0AFADBE9EB077441F9A590F684AB98F22ACD1ABCB1B2BA
8B659E7716DD06767E04AF78FFD888F6BEBF6D950A42CB9195E69F18C9607C70
71CCD52A86C7A08A586B816A9F16F69941A08ECB1AE3CD0CD58F6F5AB5D5A8B4
165655F31B21C0EAC5BD295E419A6F3C925F969C2A605E9183F96BF17FD4CD07
86E04E57D07565CDD7841835BADA8EC57AADA52666BE34F2736B7015C1637315
A8B2CC14C4AC2C8509D32D5199FE6F293BE46A5C3F32A00BDFC2EF6F344527DA
D36898DD9C5319A8617AB3E95814A87C301FD92EEAE2639CD4978DC8DC62F3A4
E42C0821F9F9178C3EE632D3C4E798C24945CBAF94FCCE65046E1C233B9D4A15
65ADD80B536709F0282414B62F5A142E08B52F3C21F014438B0FD1E36B9A7734
A6D9CA034080481D75E317CFC24F723F9B801401DF362BD4C9DDBFA99C6BC828
D03481F1EB9F767573CF5E7B3A22A2323EDE34AB5CDE29E05D610715C9723FB2
25BBA2FA1D2D7CDDC230CB6C49E52F3054D5D0D11613CB8A3B5D229A41A20622
C0D20AE3B443B2527EE54AB4DB3E1CDC89013D56AB754CA542F4F4C634A46751
2629264596717A9FBF6D3781809A14E3970B65DCE2C2957451414108915A803D
93292A2B802A02CEC1B34F3E455620AEC38A4F28CC09D835F42FC57741BA951E
AE907E955DFABA52A9076F322B8F122351E85D75B99EDFF3D2D50059FBF2064F
A86648300F3B78B9117ACC4B83F8AAEB1AE57A1F056BE2AAD247429B873D314A
F4ABABB5EA4F9031F8CF29DBCCFAE1EB519D9C3572E4D2D88AC3E856F900D267
D734164AFCB4FF518AEA409AD3EBA59AF40E53493536188BB496B9247ACBCB88
529DF6DE1C453F1BBC597E43FF1B8DE2FAACBCD384C813336B5C11F56F368789
ABEB6C7F5758F356C6ABA76F4E50463EB728315DB7F6C64A6C9C890F2AD3337F
6FB7E3A64190D687003065D990A395F60505C5334CFCC4F05D7061288AF4B52D
E3555C18F955D9C5FBEC3FD4F83C580E6D3576CC4E86F059D59F40152A454984
8BF8A749E118855B6ED6BA9E66316EAB63309FC2C597F76F4981CD56BB180EC7
1BEE4A8C9AFBCE06C7ED7BA126782D47474F91AAEF69C0D9EC460B44D3083ECF
8D93D7F22005B41477145A3362A0E22A47B50E3CCEE3693B8259A795F645A9DF
C7AB00FDC56372725AE9B280EFFEDBB1D082DFF316E125358052E8BBC8C8DA6B
8DEFE3454245BB6E682F8DBEE76901EED818622974D66EFD951F003F6FB019E4
9AEFE6DC73BA878DAAEDC7329E5ED9019A6482B802298F4F123A3DB13E508C7A
38ACB631516936D5373AB9518D138EABB19F460E45C725E5BE52907093AC519B
3E495CF7078266468CCF9D9494A22A2382968051800791A0AC4AD6D5F6E48621
D520B1F52F44BC2001587154A8340542CA42417EAA002CA3328AC878AC6C8238
797C1345E2356FCD4FBE87CDC346EA0B830FF17B35C374F9D8A71451EA3A6159
8CFD6A39AF6FD5BF14A39F1824CF7179C92FF7E2765F9CB624B1BEAE7110F34F
B1E74C926352B57E7DAE80C98E60ADEA3F23564CB6DA53E4141092E9EF973CEF
2915A6D0E5882CB9C2ADC2FA533B616A1874FC20A4D58A73AAE65CA4F4B6FAD0
E1A970C748F18D80FB0120FD6B766DD79DF40C3BD8A215F6A5A701F16C9982DC
C6E18342F5E1B2331133DE2500CCF86137564CFB52A759B7CE851424DFD802B0
5EABAA0AF079E5F906CE3CB4B32D049586A09739B4AAAFEE980A8B608C62FB4C
CED631546433847D6A103065F35190E73B45F78AC127AF9462CD4DC92B98E22F
0FE0780F1D6057D8FA051D0D54385ECE63C32FCDD8BD2E82208122C8B8C25498
92011D7F3A5383F18936E94F570BF307DCA1BF05277B87E366F30A79A2A7EEBE
FD048294EE529625C7C10AA28694F3FE49D0B8790B39B1A7637E667CD5BB9D75
9AF8067981238094150A78CCE08B225B427932DC47779922EEAAEFD137E82CFB
4AA3476AE7AB02558ECD89D6AEAABCDB85F1FB4F4E318FFF3A9CAB4757EF24DA
ADB33711E855A0E25582F10469F1B6C19089AF013C38F2624826A5730646
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMTI10
%!PS-AdobeFont-1.0: CMTI10 003.002
%%Title: CMTI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTI10 def
/FontBBox {-35 -250 1124 750 }readonly def
/UniqueID 5000828 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
/FullName (CMTI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 35 /numbersign put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 52 /four put
dup 55 /seven put
dup 56 /eight put
dup 63 /question put
dup 65 /A put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 91 /bracketleft put
dup 93 /bracketright put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
A91885E7410F56F1126D6062165B9EE0BAFF28C2B54AB563630AFE4B69FF032E
7EAFC808A831EB41785EE4E3C12C9811617774408CD94DB0AA8DD8DA1FAEBC92
63DBB3C52FCF345D7BC202236296A90523F67CDB5A61E1ACED53BD1516DCEF3B
551577E7F11E3827F465279870CA80EA5D98CAB97B709C0C4FED927C9D39B41E
36C19D3837B5222166C447B82E7552DE05711B3883394BA9DFC23C023951C59F
3E09157F87CA9762F00A7EE36053F4A832A28378D5955C2CE2C8F166B7D18498
AEAB82CACB5AECED9B0651A8A70127A7B6D6928D6393D85151B69718F95AC98A
C233A6E65D542FE7142C6AA82FB822F94DE028A8861FBCE564DCF89B36A5F1C6
21F6CD1737D52857A23FA98FAE8044179C39BE2C981AAB74C985BA26DD7650B2
8A326F8B92F4E100749B38E25A0BAE1E6F8B7F840771BB764DB8D1C842E89EB7
70D4FB3D1CFFB6FA3628B1EB9E2AFF32CCCD750274CE8B334FECEC14867FA5C6
E46D9CF9515888278110F613293039C095D9EC60165DE651ECE16340FD953A73
97D2D9A9FADCC0476CE9BD8BA1B75DD360765768AD37EE4DF66FF61C5E6B4441
A41ADF3961D7FD5E439843D2BE6EBBF33E39088B04BCF02926F77C1A39ADB297
BD5D35DA31511EBE5F047EE68288BF3DE1225D981C287FA9BE18C66C0FAD7DFC
B05E178555E2314470BD7E64EC7882A64BB9D250F03F7C7BAED25968A65D96B3
74CA0F36AA3DB6A47670D4ABE210875AF8BB315FA9FF78D86334C0ECC06D253E
F41274448210D46E173E04BE6A4C9AF6C8BC23B0EF15CD2CC48C2A03707848E8
3FD427A5DD934469483BC4D2EA360200DE0C9544215E67DB8A021F378739552D
B24C4F81A5577BD4B2553DA52CB589C612D2CF587172584D81E4299189D9229C
35435A18684B1F3BEF88665514BED008E7005D11B94337DBB25757342D9DBFB2
E12DFAF058DB1C1ED509438C43FB9D02F684BB126FFE6BE239106C89C45F3319
B6E690C15DAC8114E1968CEED141266BBFC3A2BD00BB54727637A7399FACE0DA
2977A910FD39DF8ADF43EE8E2D9EFAF06BA2A8B41478584C72AF75C1818F6A1F
9AA65FF89B6FB3948163350EF370A1762C887AA30539A93A3C4612A34D5810B4
022BC6F585B621FC39F4A60CF5F14DE7029566695B046FE6245FCB324ED4E69B
C0894D3DBA4946ED75E5ADE454810CAEC564B8FD0AB84BF6F8EB95AA878584A8
AB54032098A4FEE9040591A04A6B547E3B714922ADE46E2152F0E30D38E2B0F4
5385BFCA512CBC8FA98A881FD202FB6DB3661E4D7AFBDA0A9C68B3E100233507
3566814AA515708E0F4F7830ADADF8BE32E9C8DC4B3B12362AB3F22EBEDBF27C
DEDFC149FC2490C4C5556494F33B1222B2A8BDECF18850539F1864D043EEB252
FCD825556C3B151AEFDF4A6D2AAE517929FF3295C5CB49E402CB349A4D94AEE7
D0340233835AC7F574AF99DF6CF36140547AEA1177C3E72A5B7F902B2459CC11
937221858715B4275551760DD4889C9D7151756896833D2D4CC1B563AB211248
CD624CC03CDC6D97547A09A5A07BA5465F4DA7F1578C4800C511C581CD117E67
B8385405D82F8FB3482AE33D3907D4B4AB1749589111EDE4DA3D87E7CBE70753
0753EACFC2DFAC0C375BE539EDEBB4FC3546BB0240F448F0CC4ADF5FC343C598
976099C5CD57973C469D20E6DEDDDE88194F7A201371A21D1214EDECCFD82F99
75D9437C4A5E9616A994F5C93918E4ADDA4B07AB4848E6D65E3788ABECA24F04
4F8D25AE3410953D232F7FDF66024636498F02ED7FBA9CC9F79F82E1B7366AC5
5AC273C5B044052117FDB74ACEF5C7F0879E6FAA363046BEB8EA001BA57573BF
1D6D1ED68C99DCC2027BD2215387D656267545FEF90E3028819199F3920689F0
6D412E412931A309E289CDCA60FE9BDCF363A678B064AA5D4AC2679BB00A9A16
78EA1AEA68DFCAE84CB9321D9FD05F2D761B67600D7F2AEC53509E0DB0167996
518A834F071428116CB05C3563EAD2A590DB978A395C56DA4B9994B74C3FC6B1
8978C77A5680FD5D8DE8B605ED3013A69E65112CEB206934748915856FE50D44
A35F1A43AA71BEE7E1A5683573724F427F2D99934009874061F0F2D21F399899
CFECBF9B74D19AAFF52B552417CC1588EAE7378A10FB16A3C750C489CC692840
55D78BE48C1EB4AE289562E5F4C92A6109694BA1FBDEBA30E67109A9DC9C060C
F4FEFC31D141ACB05088083720D9B5CEB6E0B0166920D60D87EA64A9AC232F82
D31EB9D7B1B7E0041EF6F36D3A52085D572594197AFEB46F156BAED339161CB1
674C2F5049BA3B96BB1CB3033B333D650F2BF421DDB4792EA8E71D42E797914D
9342D9165825CBB1AE79EE198E57882A8A34C79082AD6C892461B623F6A4B123
B349FEAB602D6193A571887328D559DD659AA0502C17B68F7FC62C7047C194BD
74AECB533276E9E8EC6C3CA0BCC3ED84D06B649846980FDC54174A5A3B650F55
EFDCF695DEF3CA27EF76E4A4C5EBB219BD0505E336C4D29182A25C20E03C0665
6532C84A239B74E2C8E4608CB3B9FCDB50328C7235636C604DB757E31AEBCDEE
4905AC0DC98F4392BD4D1411E8E3CB35EA4EA06D61F36CBC420AD26AC71A405E
C0259C51371B84D6993C53136217308CAA641B36C10F989F8ABE01AAECF992B8
8C6B78C42D26609960D62A1805A7A3B2B09FDC8FBB69FE470084E4F4906771FC
D30E2D654E1532CBB71A9860E6B85FB499AE7CEA454FC8093E97E68DB4996E71
AAAA47C4F02EE2F26E3DE5AE7A6DE14B676A7642BBB076BEAEB1501E06E3A454
37A02A3D3382471BDC3EC430C10CDD7362585855D34BAD41C07767C8CEEAF9B6
B4B7CA465AA8FFCC6070B3687BDE633FE89BA26DB56338301882013C009077B2
60BEBC709F25512D6A3FF2BA0D994DF539B6DD321F4FB482DEFDC5AE853BD507
D02EDD830F08552F5D741BB84107500E9CF987BB0A29B77A0461C5EED6842940
B77F0D79A5D254A2B5229C3F934C4006CF6F66C625F78E4854A2632646EE8EF7
4A14B72316A8D1EAC8A21FE3F860C8EDD4169C3BBF246C255266348DDD4D013B
C6B2E05768DF48B7429D63ECA02B05A5A57925226E2E9CAD63541ED15E18BEEF
D51455661E1EED5D6DA7FD0472182793FB2B5BE229924C87CF38B24EC725C057
663CD00E889FE46AE205686D07AE5B33965485D3DFF50A8B3A2EC956AED6F7D7
C807B5F688764699AFBF769F61AE6E4BF4F02089529C138F4A650B1BFEC5D6C8
DFA1BC93CF3D6723D38BBC31FD5399A2C883F8B4FAD9BF28F1C4191092DA3AEB
EF1CC0D98F50548A90EECB16DA59A08844447EED2D63BAB9C3069C28DC208553
1DD08E126DF4A00BB5004D9D8AAD1824B5FAC103C809DF341FDDBCF06BC3C21F
76E0423F23B05BC2992A139F1288EA9504D652F7D1D06C999C8DFF22D15616D6
BBBDF992C5C17FAE40AA7B2EF912019ED70723CFBAF27B64744EDC57BCC57259
890FEBF95C26B70F99766F4C83A2A948AD51053F9C915C705C719BAE0F3306E9
70953AD84FEE174E86EDEB469131A22067B49D78F457644893A6FFA8DBE120BB
437B7C90FA2F3C5B9651CD2941F56EB840235C32F34BCA7DF95C8795B6628A8B
3C765F67F0632F75096EA00DB80748ABF06EDC9EC8B5DA9DEB972E07DBFB1A1F
8C3690DACED8488F28F7227B62415EB3673B268A58EC773BC443DF5FD68364E8
C1964672ACDD8691C9F91C00B0967FE9AFE7AACE371B05138C1DD7BD662A646A
ABACBDA9B2B3151D9F89D083CC9569F572C308BEAC4D49AF247B388A7BA46964
192576CCEAE3AA57112A77C12FE11F57F2D583C87DCA3A044B3B12D4F373228F
073E037AC2D438AA85F5641A84CF73E4076E4D6D2F940982F1C4771C0026D30A
A36E3F227DF40CBE7D4A0F9EC3BC21570D5DA176D548D10F813095C5B91657FC
F5416BBC2FF03C4B0A6A22F984FB6971E9F9349F796FFDD630E1658EC1ECEBB3
40CCE0D73E5DEF603D94D59C16E7934A7201C88C0B4692311741A8DE23156504
0D54FBA5C806D15CB8035CF748E5D8384A2E1456EBD0EE1AB65EF229652445FE
C16890F45451B588F3CF824F9A414DC478A3F24EDAA8E09FDD4797C27F5B0424
4518720653365F20A81EA53FA455C32659A7E4BF94BBE5DC530F81E85908CE79
6384A40D80A3D83028E1AA7095B722F6B65FB5F26729B29C5B6A5D0830DD0C92
DC947A6D893C1BDB00C7F0B91235B444D1E86BC52042FB884947DC73C0605E6A
8D25CD589663452BFAEE098C4148FEADA367BF31ED7A9860239C757D9D2876B4
08A932C4AB739B3DB95A7BB91B4CF06B3048398E3253E1C0F6D52568AD38D559
37083A63D66158D4B65B5990F69DC1945C2CEE025D7F01323FF7159CAC7FF02F
E2145B54EF031367096A7B6AE671A6CD332695CAC8B50DA80B02BBF93BFFB48E
10F51DCD9B999CDAD0066667E04E3C7434B50EBB159789E7AB70FA658D79DCB4
A0996D5D9CD7CCD172491210A371CEA0CDBB8729A36F4F2C720ADBC23EE20290
A850E4D0CD75D66320FFB9CFB49B5ABDC8CB93746E61204347FABC42EE3882E1
8F23CDC830BFDDB8D20DAF74671B224DD074EE87339D38F9F80C6A0356FD1260
1E4D8961436BE59CE42C13E47FC61D09F44A311D2961A93304F76E4B1508FBFD
3BA5D814DB061FEEBAE136730FBDC88C15029B5EF3FF47117E5E9AFBA77F2085
6A3F5E46EE5DA404014C157ED8E8809D203C9F1ED41C451619A3B8C114DA542E
1CB8C3EE85FD83D22B8ACE95E0F02F99CBD5DA9E80E4D13FFB83ED8746F7ADE0
F32A00E990E079B2D8F20520F046527A10309AE7DF7F2A1225E19BAC3BDC21C9
B15A77E7C9057BC1AC813701D5896804247DFBDCD7F7BC33B34BF3EB98487A00
4DC83855979DAA8D0D58B5A30D204073F9E651A8B385A7F639C7D94CA1D98FC5
53B8D5C6A0CD17404B7492CCCC1FD94AE98D02ADF163048518CBC72EBB7FC555
AC525886ED03DF470613ECA1DC6828929C97BED1997B2421723E5D617FEE1441
F27094E80B3F5134340298CDCC50B38254474923F0E43DD6F12C501F954E064D
77BF335721FF071BB99D06B1875E86F327F03ABFB99B454060EC95A8EE84BEC5
F65AADB85C7C50EBCB7A05763F9D4A4E0A30ECB2BA0D0F927A81D93EACE837EE
BFE4603F5C6DD6226FA517439F0E94241CEFC11E7AFAE55A4D3748C08F93FE47
21778370C6BAB6E3B7A880DCD522DA7A9F96BC252D6EE6D61DDEB85966EFE10C
ACC92546D1428F9440857B76B09DA3FF21370F1908B9AE49C6FB02CA15F9AFD0
68A8B20B2CA179E5E3B62D32814CC9FF04AD11BC5DF29FD797700B0A732B877E
A2DED6D62F829FD1A7956BE4E266B989CDAAAFD30C2508755705867902CBA455
1C7BC81EF6D0C6826629A29613727DF4B397427BC9BE7D4477A13016984D6D7A
4A6793265431EDC25D59936DAA8D1F2C55FE37B7E368D4C50A405EFC251A4A2B
49A3E9CF3AD8484A263D97CE9AEFBF6753E3B8EB7AB0455213FF42BC1C0A394D
72B5F3D86062CE252B5EDD7B07D39E183289D5D52C36910DE8FDB4F39A7E69EE
E637066B958DEB7FC0F0251E7E159D5A1BAA54A970CD3634616CD7B34787DCB6
CDAC30C19FA1A23E705E64B466579DB601980441FAE4FA6B917C2D19959B7565
300D1B332477BD523E1F558B755B06960DF734AFFD73912E49C9F64B8CB17959
E3E12C2572C8888974C8FE6A8C62B984707746181DBFC95C81DBDB9DCAE90FAD
79C3AAD02F54215BEA67FA28A37BE8DCBFF8BB687785F1E7FE4B350E17D3548B
665C88F2E2DFA02C2FB50EA96C81E6ECF1CAEBE7AC9AF321C973F9B2E26B899F
4F7C183B5B37F41C7AAC29782A9E2655D48FAED4F62A2D033AACB03A872A3822
CD2015FC3048E14C4BD7C3A6B4761AFECDBFC32992703DE90F772D4B8D6EAF44
9A0242D7F7EBE7287A4C1BBAE641FAD0CCE80A5EB8E90552FA1EDA8B81AEA400
F28D9B0874E29A062CB5462D378069C320528173CA325612F1D5B75DBF422FC7
1E0CAB719F6B84DFBC5884386BB87388139E91A29CCA464F4116EBBCDB2DC6D5
EEEE28D4C51B16B8FEF898C2B0CB8A1E2AFE903BD3C0762BCE6DA4B6CF604CEC
F5AD5651ADF0B351AA982BD289A78C1BDA33A772BDA8182C527BDC0BE923A9D7
D6DB7AA59B15ECD362F083E4B56FB81284ED12492CE0A95E0F851B3B8685CB05
22B4C2A2C0E0154E543BA368AD6DC72B10A42455F6663CC321336F12AB235C93
F4DFF53BFB41B66A702688EF119B66800F2BE500A049EE007C10E0725B1E0651
E2DD47F51ED2C5D83434F2F18A144C090F261AD5037D79B7329A7F6AB7C45681
ABFDFC58D44757667522E0F17545FADE11B887B984283CF8AAEE00D4DCC8EC2B
676EB8DB02F4AF9935042D8CADFB6C95A3517D444C7A81B5472F10F48F95431F
86058775CB86D1F471BBE370043C3017427B3637F775318BC997E9B7CFB48796
FDB071732F8AF2D7380F229EFD155304087299B629047E2C1C2C1BDC648B36F6
76E5028419C007D002A3F196A3CB59C9AD8A0D75B5AEC0718B6D42A8B873EF1A
F6275E32A253E1992F3374831E6897BCDF8DFF45165E55F751844BF225FA77B3
48FEC00CCF0E0EDEB2167FFCDDB58A312E5C87B6F16877FDCF9461B7EFF5DB16
DC776678AC26FE964E3D357976B598C88E9E38FDA99C82EAA92BC1535BAE4B71
6B723A08A38CBCBCEACE7A423605620979EF5CCDA7B6773F9DD49221F9DCF424
C700A4D5050520ADD22FDA8ACBD61EDA6807AF913F9C99FE469C075B9F91DBD7
7B0BBE598B4AE46E1C2BDEA679322FABDBFE50156649C13A81FACC3BC685202C
FEDC57DBFA7921C91F0F476BB1D3ED58811A2C97D83540C0F3760570EC9A21D2
9043123AFB9E93764ABB86E559ED93CABE67E2EC8D32F47160704576C8BCFE3E
46C3928D5B9323EAD623C9D61EDCCC17098A2E78F05AA7DF5CB670C8CD4BB94C
9D5E55BEA97097C770BD25BA10C5611B339810FB0172978D396C05C1E5032094
254F4F31E97695B8376814FDC600E8EAD2B75A821B8DC1D7781A2D371149B0EF
C54AFFA5BB3FE6567986B62FD7D4F32CE11086ABAD1B8CC9CCE8A62F87A86A9D
0721066E429E06C724DBE70A60B6127438F0A60D7AB0FC949D34017DFA0A64FA
2672D57B22AF098B350BDBCB55BF925F3DB3D2FB288D85A5BB11B39A049B7BDD
95F8E62099CDF6FDA712A2A4E2A1621A4D4298E1A7654C1BB5BF603049951108
30A6CF8041F142527ED5C65F23151F1BF2AFB69847D02769C92A55E07825D6FA
F79FBDBAF069D8DFF291B93F1F30922DD623E1B5D0DBFE5913D32747B83B2594
FB1DB5897C82618B4F715591CA21C44D1CADB6F31B1D9218F46ACA203F92306D
FE612047BEFF1100A052D5F0C31937EAD4CD80762DDCB010E58AC37DC09C117C
DECA1F49614EB4E92CAD25B69213104182FFDEA5524DA0F50EA6D140E1F3FC05
D3C1CA2602D2FF4FF0CD3847FF5608C05BF3F23D3BC23E44022455B3C36D01FF
34D6CDA92738B4F1A6ECB2023202AA7FEC4E1D7BDFF188CCA631AC2CC67B3072
DF923F6397055184A344B682DCB33CC0005C07283661D1CDFB0136C201D3C57B
312B3E60D44815206A49DEEB502AD736916D22E25FD5F767F98D85BAD3D25FC7
4B21A346985DA55DE02A4FDEF49787E6F9A490AAC01ACE5DA155BE96CE3A0A51
A905AB96255DC6DB996999A64A482A5E98676CC4623DC660E8E03C64C75DB982
1D006F3FB18CF7B2FB50FCEE7B1C35E8DC75849F853B75F9E710E4796373E5DC
8EB6A65D8D8DD6C03923F1DF707A5BA3CFAC509A99A6C23E6E9EFF77BBCD955C
15B07F0C0D5F82B83F25FB9271692EDC7694FD4396759E69A501D4F7B766063D
7BB7A424174E9AB8E92127977BE7CE25C5D2023413B7057AE955A4149653AFE5
DC0DC7B3E03CABB134DD272AC77EBA8D704DDFC6310923BDB4D36C9B82F9E911
094A13E0258AB6D9CCFCF323AAE5029679832DF99841A2FFEFC7D14BC575D236
E4F2CA028250FA336DAAFC43FA0D4A2BF88D897992064FDE911ABB9ED06C0D64
66ED24A1D11E858BF31247BA0BFBE41B26A7F0A5BDB23C03EA2A8204A6A8D526
ABB8B3E95A8E95FC595259B8625BEE0307CE4A1693679856362C23F1BFE63D8D
B1F4C7476471C327DF5E61C2E073CAB98C37D861F9B842AFCB9400433C887439
4B498440B1BFA6CBB643C9CCB0A029950B1368F8D16D98E0A7A9A03439E89D76
478D053C652F3CA1075FDF43A2D8A91817D04F6614C92C741971378BB9A9E3E2
47E7F8EEBC7A84383D23BEF70E646F69EC9AC903C414A7FBA0DB43BAD4DD6488
44F4B6F15F02AE33A266F3D7765E93DEC8285547F14127DCB74951C8B10BC04A
56833C79D7DFA28FDC0C62EDD38F10BD2775E93D75224CE1CE7AF4E31DB7CBC6
0C0B24A7B9547F63E6C92D4AC95022A7F34F1BAAF0FAC9CDB0BAFAAEDBAC813E
4846A59C4141E1B1BC688521CA2DEFD78B6B8AD4F539EB3F50A8C2FC1D4EBD2C
13D268F1BF8BDB634B75398F5E1802C173E615E4FC65D20113B470A07B3CD3FD
03C909542EC5702CBEA276CB298D211EE257589E49D39B26272F14CB4B7B3F1B
A78572E222C51713E07EF6256F2F9F65FE482476538EC041F3453B61C110C0B6
9D29DD4DD335396B5EB087F4FC2804725EBAEAFCD1B993FD771A2AD5A238AB2C
DFB3CA4E98EBE302C26EB9C7709BD730922ADC8E942C5A2AEBE678E26598CEBE
AAA6D87458CCF29DFCE254A8DA17F211FD69A3C345C789EDCE912B8E5F2EBC7F
5D19E500FF5B8BCB6E4F3322FEC0097DAD4215132779E5BB6EDACC232C4EE5C4
F2C6EBBF632A8995AF8EA3F2935690695EDB2E3C42C65EAC87B8921E157D91AC
D07BA81CEF8A16FD8DD13721019AEA82721E11B24C80D2C9093E6478293E82EE
48B08D40B931A26D7AB3D5880F499706C28BAE6FD22AFA0F44D67A6FBE41B1F9
D253E28C6475F42FE2454838D7985AAE784F057D12A64F7DAAFAAE819B869C47
C4D1A19DBEC3755BD6F79CC8AD81428469C5AAEC89EAD256D611259ABA62500F
5FA4A6B18AA0F540AF4F23BBBCB6BCF4135524CDD43CA15CE7EDF7DF75D8349F
C3DF2BD5506314FEE38B79D79BAE38FDAD2AB5CA326A3AB579EA261E98023379
4274CD6BF26C3176947DA23751AEA2D8ABFE3296C28182DC66F8E3E037129DB1
749D68EBE9A1160641C47CFAE613FCBD36179E5DD00253946B26C4BD56300512
A21273AC9DC29F9FBFF00F0BB1624831BFF1E4FF62B6C80C3C8989FB108B9DB2
112F5B2EBD845B4C644FD351186C536DB3A52F08AA0D7A911CFAE6CE08368BAF
561FF2AEEE75F54F413CEEED43BB21C91020B90930BF45010ABD518AAB2D97D1
099EA685FECEAA0644017E73310E0B9FBBE13F929BFCE641EE60D355435B46ED
44F9A1EB05FC38175A4CD5F4B39AD5F20490D11CF2FC8CB41B12BD73B4C4A153
B329F466C7EA3A3F25670C2EFF461C31FF7C1FA993C8B7DE9BE1B7348B2DC2F5
075F19976342F5131EF9D4147DA6154AC8A5D45F1BF87A4BF364BA3DDD709F8F
E7340F08F016A24B29D3B42E48351FBC48679A91A49E902467D86D1C4622BE9D
90BE94DBF003219BA3791CE905ACDC05669682ADDD687959DBD311AA322A05CE
A9236EB023ACE21FC765D0278E34AEBDF29E7E2A7C9EF17508A5B22562690703
439325AA668EA3651B54CBEFE48D5E58C187E6989A0584873861C096D8AA629E
4E7E0E5D864D8B4A9CA97BAFED55545C83E89A4A6141717E02366D0719D44334
BD3C0A7E92BFC92B6DEA97E79A3EB100B6940AC134345461D9791A482D95D56B
F92B110AA01F5FFD95A4005442CA27F133DBE050D6B66D477C800BE2609CE59A
218FADDFF9B8B9ED2410210B993CC6B3AC0A1A4DAC3A74913B73961B830F3988
5EC0A1AC64517ECAE420FC5A5C42876686B5C104404D83FFADC83696227014E2
04565DD25FFB76AE910280C303F07ABE6B00C67E3BEE319C08D5122283CF5F40
AD5E106E49F55FCDF9F6B6A1D5F67D6E6DE5E810E8E5324AE55F4ADDB91CEABE
734C81A535BF6EC2AE023E2467C5EE36FD8B6A258602A6F224CC63BD98F0D9AE
22E7B00FA13D1058350B43FCC3D3A6D27753327DECF0AB77A21D231F7F45CC93
F21CA3E9DC2B7307736D152032A0A44E8195A89BCA98483635D6FC940596EC16
4A1C5172E6D0D74FF48C42A03263C7C76280ADFF2BADDF73A27BDA2764FDB1D9
5B83BB1528626B3A292721A08594218EA2CDC5D0148352E1576A7D9B8A7B6E99
935D88C30C7E8AA4CC8B245D786D12989A92B7BC0AF223051BD4E43FE7DC39FB
595DF88BD915B108919C73ABCC4B983E08333D70322348A466A295AC4D1F10D6
16143EE14C636219DD91870FC0DEEDFA3188F9FFFC24CB810E21979703804B0F
7BCD0B0A8104A88C5A364A981CD13A437975D399E5B607DE58263FF2F499BE64
7C0DF79A9DC92A4A459BC830CBCDF1C92EECD88D1E81C968D17653143F6B9B25
C4FE737B8A706A3C555F75EB6840586FB8A2FAA074F7FACBC984C21A88674B6F
128C7F924B3D1C5CD9A8107C3A3F6F969B5524A03F5CBEFE1CD030A1A4714E47
718942BB881B81C465546D6E656B8D02C0B5341C515A3D0F23FE147294008CE1
A05CFCFF6372B9DCA45A1EC7A678E25E68F88A5F7F7A7738CD4BF5CA3DE282A5
C5B3834870D571463DE08D670E2E8B956B614A8555888F26B9249FC5A1BD3BD7
54DDC448BBD5B5F38A21A3BA580DD681FC2AE92A4C0E2F7B2D99682862089B04
70682C446EE36F4197DD0494216043F257581CECDF8910050CE3BBE993E2DBB7
8C47423CFC6663B69567B370DF1C1123888D1EE1F3DB762F4814FC03E3B432D3
54221F2EEA5612E4E99BBCFC309C74175D3A3ED672BE36CB3797580BC4AF2432
1A4A9B9AE2FC03BF139E5CD6919ADF2E9932061FB0A09549F098F8A146286D5E
4C3BFE21B3F179030E4112A04D95CE3EC0ED489193A7CCCA87CFA5A55EB78125
48CC73819DBE85D4544F051560539CD45DB75C4BABA376FC04EBFD9E8B9E97C5
8BEE315272C1E7B23A13E995BBC92493C231F24417192FD455BDCE52FFF81354
187E9B2279BFB9AD85013CE56FA2B19ABFBCB650044EEB7788F9A8307D98B44B
54FFF8ABB34B7E523AAD92717768E4FC31E7BC129897F4CDEB1B4AE020AFE9BB
40CD5DAA57CC54F400383134226A239DE97444C6E3BFB1853C5505936CB997F8
B6B0C00EE8A558D9A32BB8E8B7A68B03570EA3A5B74748139797D80E6FBA5023
630C234660BCC598E619F81C5E1C0AF65DC9EBF6836744264AE8ED5F5AF73070
4776DEDD8CB845347272BBC4A6AA44909971F56EC0FE242C4A5DCD240F89D6E8
AE448929C068704F6ED414A8641EDA2BFA5903FCDD33E14EF5C46B272229441F
86207BBC18760BBA6FE3C1E3A3E02E5B5A05F13374B4DD30F2C77EF6CB691FA2
58EF582CEA8D6D8DDC25772DE10828B257ECD48418E1B48C60F2ECFD724E9D2A
96BEEA0AB88F956E8F5579A0A84FD2AF6C1EFDE8ACC8C1B3ED8BA4DC7A43E5BF
E631E10EDD219E52EF4E92B5157E35D272C50B8BF533132D7A09044E36424532
16BAD43C613EE2F7F3816DE3C365BA88EC832F0FAB40C670E79D200D43037EB8
EE2B8FE22F76BFDFF0571AF5E42E415D9AF83CDEB280FE890F129071C11BE783
E533C2BF5C504EE3D33A8B88E59598823CAECAC3CC55B16AF56BD7A604DF7286
30245EACE0C9A33B5DA2D563286B144ECB821FCB2F040914451A480C926D23A6
51E226B11EBD0690D683A1E63106627C757FD5544EAC247F52189DC630587D93
D71BFBA0406FE3558CD83BD2A44274C2A88CD1BEE55DD6870B7DD20B8317C2A4
A59CEC3BF3717B04CD12A421BE110889E88A2A8BA3B27DC67814A7178B115712
F9A564342A6AC1B647DBB210F332AF934D9C7EEE8FA0F3B57AAAC9D3205C2A0A
45DC0FBADE7273C1CD7EC699C7008C20CEBCE7DE99A829E925756CB6940D4D99
AD2069EC8C642D562BDCB0A94FCDDE210611E0B4AF8385F5F28C516C854FEE3D
358E076A47DB51A62F3D78F7720BFED8A723635235849B84AA2466F43213FCEB
16F71B4C91918EB59B5E1B0B007B99EEB148FC638E47CB8E56B6DF379D2640CF
932EB9EC9350898E9255BB6864E2BFA64DB25145B9944347CF0A75FEFEF50BEE
679C2524FA0A014C602877FD2C39378469465C4FA6DDE89446F40437E463CBA7
63F33C2472E73332B5B1AD026706EA2A18E8B45FF98E219B022121511CA1DCC8
12FAB750BE22B369557FCD281B583E14E3054DE379B4083E347F048751A77CD8
A2A51CD1274CAB78FE0E96554393F908EC80B05BF6CBF84C549A6B81C8C61803
EBFFFC15481D635BF390C3BBABFC50CF8D4FDB1091385A2EB7621DEC8701F09C
C552E76B710321FAE5AEBD4F8A08310C935E2E592722F29D359CCE78E8E18DAA
A90122230F326ED3DB1F641A566DAFF19609CBD66CA2857629A97F5F46FCE4D1
E8BF5128E915E80E9A3B45D53632834A5A96B889818A818FD4B9143AF92EAA01
1CC06803B31E052C568DF6905BB8368FF7A469C3C217E4A5CAEC61A66C25A978
B757E5FBAA675CE99A9D1503B59FE6059E0ECBD3D1907C3EF7E70ADC453AB525
32515FB2EBB7634BD9BC7B68CDBAEF7A2C5B9793CD10EC628E0462081819FE14
7D626E244F427ADA1D39DC1227DFA3D4F9031A77337A0A40EB6CE7F8E6D6A732
069AF7C1953E035FD2A6C441D9A465E37BFD4C80F3091BEC871EC780001B37BA
E5633B2A4C0714260678F5316047F635151AB340CCA92A857EEB83B78CE6FE01
7EB27ACFBA5FE7C9984BD1E96EA0F88DD948AB9D3CCDF8AE638410C6F409B2F8
2669C729B7D49C12EAC6D8CD1F239E817752B39C63CC03D8E8F4B12338540D28
0C9D23B726CEBF0FEB1725360319CD3B905EDA048B6A3EA62D7A93E66DBF17CB
A560B1BDCC8663053AF888CF0CB9EDDF4EF9EBDFCBBCD82D6FB41D2781536F2D
F9F47B3E91398FCE12CA1022AF269E4B88E72B6A675A9F4A70975A1EFE376F2D
9BC27667F619375BFD0412B56364E5DFF2BFF00335D1BD25B933CF817F779517
CCB36F12C20011FAEB4297FB5CBEBCF83CC0D6148680B856FC7982D36A0DF6C1
9EA9BE5EA19272B066B68BAE9AEA8C6D3165267BC500E6E6F69F33CE9F297D1B
052B968F4F27244E4FF1A4E03B4BF9F45AA525EF76382EF1503B1338596B6B05
9B946C26088E390FC9F126D384D7534B9E8584C3C16B38288A236B985B64576B
20C34B566100C0DBA21E997297CF29AE00CB793241192FD9C14C5A2561A68A75
2273FE3EE1DCDF317035EB39E27D60933AB64DE0DFFE1C0140029E723AE8DB25
1909F08D9FCC1050FF9AF805BC3BC486F819BD41030DD0623685654D7BD78B9F
A3F1346998BCA5BDBAF08FDADB324FFE674C17435DE6C8B4E7CF9732BD12BD9F
7DF826C03487E9C3B45773103E5DCB11499EF966A0FA45A00CE77F610AC76E8C
8121ECEC68738A8E750B56A32383BD16DF3A737C25584F974B3EDC224D28AE83
7755AD83509BD8851397241DB71786C73D977640FD7390A18944E6F153158FB6
A688B261AB3C825553FD4FF8675D1066AACF7BEB5D4034D451F8F292497C025F
BDC488617AC3E4977E95A4B4603BB441D714C1251E4B22961F8B6541E204D1DF
1866D3E1D2EE4611DF0AE68645B36C142E011987C935779F6DFA099975016CE5
4271E120803332960E458AED47064E1E35B235AA5C5E5B98F5B08318BF746359
113E777AFDBF0F6032CABE52D667475CD8200A374788F88A16103BA201F79911
65DCCAB03D2CCDE3AA263ED92D266D5FBC4FB8471D19E97BB55DE4A49FDE47F5
5C5F0D274B5AAA23B27414173F32683A43D2E10CDEA2B0020E99630A04773F46
447FDFDAEC2B6828A723198BE56DC0731BCE86AFC30AD7FC1CC40A8D8944956B
7E83CD123B598D11F65C4051F65D0DCFE08F83707F3F7554A8B463EFDD48A234
16816873772367BA4FE5DD162373AA48E1B772256AF0E2C3A977E8D5A5202561
52F7A86FC5E3D51BC9923D6236A3D91240EAD018805B021CA21F2C862669CC08
A33F82F32D706E8D0BD4C80DEF4A96F9A6B6088BE1898DCE3B8C864DA99A57B8
372DEE700B3C58B955F1887B0EB61F231A58DE0C4FAF67620345439AE40ED996
0C5CE66809ACD3FCDABF4457B22D67A96DA2166369B7504825D9E09440536C02
4ECA9742A3D7A3C9D4D7F49E99A0F145F099C01EE6898670C81EF67EE9D59035
7E4A6BD905F9012C5A4CFCAD0B17AFC04292D7B5E625E69127F5AD143024CE55
EE6F578C13E9EAD6EF660B6F4427A9F405CAAAAE7C159C3CD2572E02CEFDF6F7
B6AE3AB1298FD6C7043F2C72506576ABBBB9E737F0DBE70A365E453709B091F6
26CA61F37A0C6B2B71081536C52663B8735DB22A3C180682CEC8AF8804B34351
47F7BAA70BF7915CF0970FABB5DC666E9F479AB7E55A76152927388D2D873A92
DA7C613DA219E868729BDA631DCA5B4C790AC3D8B8B8664FD6A36B405B1C6A1F
2EF5286EFFE7D8FE6912A34D8654E46D640EA1D8ABF0E2BEAAA19616BD8B1280
B1CF82E4EB9BB634444730580A92A676740D69B6C1223066115B3A9FFBA08A38
3E04D268F76BD3A2C55AED41ED2DA38945ADD90551AF96293DE0C909205B8E5C
7FFDE9CEC149B84DC84256134A5548F71A38B32C7AA7B2371146CFBDBD7CA65F
A0CC7DF10E1030F69E630EF07F9C956712E14680C9C1C0478F2279E72EA818BD
E796F2F2F78AAABE8FF6E50B7FB5490F3E87951CC69007C7104FB68A522D310D
4102BEDF9D149F7A3F91DB15FA361772FBFA8DC1F4D5A24DF4064E80A70CDC64
09D5B43F95F7A907564C808B3A714A25C164E6EDECE783153405664D15E1C604
9FBD18F356E9F594CE22737AB3B1E162DDA183CD79807D126E78DE25678DB394
57BA581E72075CDD048A8585B570CB2BE5ACDB748B52F95585D9163562E077DD
547C5840F07D27EF2E8907E74DE9393A8774AB7116CAC582DA7111791961531F
F5DC8E83641A32CEBFD9D4F08F1D0505D5C26FFCA54663DF4FAE6EBBEFA5A054
9781F043B067B005EF571D29E9F9C5FC468EB3E45F981006C25D961DBD99F063
ACA35878A429D76FCF73EDF7798A4397FC1267148F61E3B3F2CD2E29ABCD78FC
77876B1F70689642410E859AAF8FCDE27A75A7EC62F2C6FF0FF3BC227F4798E5
E37FA47FCABFEEFF05F58C660315A52F52B50211A6F8AFDA5F7851D908D470AF
2FFFE19261718D64742D7FBEB18FBB7B1EB9EE0C9002B39135C184733DBADC23
357DCCE7D2978D97D1AC4F07D01755EB052A83C30DD704E3CFA02DBBFE13C624
B42803F986E7A21A5992FF1631D633767CC9B2136C01A3C7BA2E29BA9C247EE5
044D601EF4A2682EE5CACBA667358A1D0D17E6A8E1B22C560D84E3C3D2104EEA
65959A77E0592A390D290062C4DF03F219BD83DB56ECE6D7AC46A02CEF4FA172
064408BCAC23EB5F746FE53D7116E41F20BE312E529C3B3B2D643FF6A3D00BE4
1597DE11E7770B3C55C92E3A00DFF104AC9BF9759509DC6CBD02B9607C3F340A
BD292A29F13DFE2D8B6CDBD62327A0EABEA7CE047CAED94A24FA1AAD0E36FCC1
7DB89F11E53363B8EBF81E0AD61EED9338C7EE9B41C2056DE0B3ECBAB10F1712
766F77F31BFE9A0EB3B3A7E285195240000741783B95B3090897C9ECF50CE352
3D6D02E10688EB4D0C350D50FC6CC2AF922591D0586BA67C7AC4971299AE49C5
DC4A3E0FB46A28720C4EA5D0A722AC2F2CA809BB4D24639B2E28165F9443391A
D11FD45487FE59CB9E74B58726C334B83A4B1559B73BB491921285ECD6D32B6D
2D8A8BF02346ECF628DD774BBF58B9C793B9A4F6FFD94A1AFB3EC2BEDA87685F
7C9E462FBA289310C937EED66B2EEE80E95D9CC54849B3A81BA116F7F5FE8DA9
540D923905015A9ECF1660846222C525EE8EEE36E8B35354A89C17E6239BE2F2
D5A4641C020219156FF9B33C8FDCF2483C9E83FDE3C7D697B7FC988576130317
D9E9E5293C9D115AB10EB1D2DC48B10D2465876592E1B8F9DE4BDFCB339D3DBF
E6D110388E7C2CA43C281504F461E85A07F46BF7E542DAA53DECBA7EA7863C95
6E62003C5C897DD595BC18C42A4D493FA98902B97809FD2C2609A640417FE6D8
09E3D6EDE442B886428F9EF9357ED6FAA475CAF5982BC87FE67918F25443A079
074C57CBDBC68E8753F20906793D53E560154E827BE332ADA28BD3AA30265954
852C2F297DEC133E33ABB28A0F8B7F2F58C0FC3CFD06FF3B7A022DB91C4ACA8C
EC898FD5AA059294B3F7808EB2C4C21901CA92B974F1EF6A95AEAD45E8EA7B49
17579AFF3FDF79CBBAFB6A71C6647776F15EB10620BBF1B08AE89EBCB6A4A734
0D53192C4834726309838EFC130BC9E0AAAD42CA8C4E3D5B97E3785D5EA6BC71
74BE219F143F6A1242A4B2587A1AE86580BD576D678B12DB342E7E366D3BF1D0
FAD28FB828B9B9B817ABE04DA31CB7EAC114055681BFF158DD6D933C31CE86EE
A623E25739A0297E2BFD7D3793CEBA477F9EF00EB27FB58238D86F948C10DA20
DC682681CEB2AF9736A016AEF44BDBD701588B546D5C93C01383A6E4208B56D9
1C6B37BAFF17A6D8118C14B61B1D14E945969435B7A1A0CA3E417911222741E8
636AFC60D1D74F0C9EED608E41B85F48AF1E44C01217DD58BE568992F6DA4D44
64E08A7851AE6ACC8F1AF3FEA0011292D0443732E1AE7C1569B6A1EE3CFAB5F6
2A589FE7B5350D8D4876C60C8DD02248D715B08852F00049FBA9783BCDA8A54A
DAC44CA6535EEA91E63D18EFECA9546ADA40C07D73330E4B40DDD79509F94A8B
CEA9D79BEF56E423197152F06E3FDE431E460C8E202CB4FE3B30B867C7493B84
7DDA8BA3A2231267E825C3F5D1A05ACF83AC7E1B131A54C9DEF7E3349ADA3027
326DAE72A9F51B98B1549E636F57A27FB0705B2C5EFCFB5B82904B956DFEE0CC
FAD5983B9F497FB583191F02E532A5E83AC0D4FECD4BEB85E570ABF7FA7BB269
CEE885C9EA0163C8F9EA49FD3A90023F3F605C20D3768E74B600E82B6DC6F61B
1E66670D0DAA9D22F3A1343A6AC05FD211214341F7DCFCB4DB06F840EA80F1FE
42F50662320189C2B0EC0075FA56D7112FD56EB6D574281EFA5D0A0616CEA0BC
027A698C3D71B2878296E14B0D658050BBDEB8C3415CC329079137AA0C6A5EEF
84D9A7E7B98DDC7D20778FCF8F8ADAA3274CE63E3872DFDE5BAA9F27C933F4EC
1AA65488F5E3AB4CD359909F5D9D9345252195F19B97EF3B5E5D8FCD3DB68E6E
CCC038C1447684338ADEA4FAE4B9DDEF8587B6466492608DE797D5A2398E08B1
7DD57B2AA136E9542A66E995355A701D7466017364188C98E953AC7C33858873
7AD7553AB76A6DF7FE776AA2E1DD51BEFE47624505E87801ECF05BB05CB3C544
043619CBFA5DD1D3B57CFDE80EAAEC23E2D8E2635B25E9F4A86F2D959C47E189
168CB1B74303B9698CE2857411CAC3F8CFFCC3C91F5D92AFBBC91A1F2A00F4B9
9AEBC05E4099A9F240712BE25903961172AD8389FEFAB4F98B7E60543552416C
E56246662DF5D668ADD0831371E6C673C4281E1B5648F2EE4071B1E40B0AFE34
2B0F47F7D8859BAF3ACA0551B2B1B6AD38EA66E305A8046ED889C22F4A5E6D34
C0F864FD8449DBF3544E480B91E0B694A234E2A51ABEC1B15083990FBD7AB7A5
940B4BAE882DE31B784DBCF06C4C693FC366EAF170F0ED1FA1E85BCA3ACFC91C
7EE01E5B61ADA76A06B7C90E10A74C54F246DC03A1BA2095719E7723325FA15F
17B8E47EE8BF534FC07180E277557BF1FFD07D270FD33C8B529876F7DCCADF6F
BBCAA65150ECDBBE1DD579377459CC53D4D1F115DE433A8BF7475CF6D9D78603
0D52869A56FD43C1683585C00F4BD8DE4D2913CCEA8D3E9A3777AD5A13E15FC9
7105726043836B8640827C036E07ABA777F22C427FCBD674AD7AD4564A0CF573
E140E6633B4D08163CD637CF71DB1E6B70B0AF0FAD7BD6E99DAD769AE88C7E4D
85C2E07F88B20514F6680E39ED03EAE09867557DD8755701D5D2786F1A7DE3AC
A5898741126FBA53F1BF652D54D3BF0DF7740F83C47A444ACD781DCE9D21A4A2
B73D37ABB6A1B367FAC1712DC9DA377D86BD5A10A72510DEABE14FC18AC3E9B8
BD15685F8DEE7A7A5D206E9A372C860A0454358DDEDDE05119E04D53C6F6F5F3
38B807A4E55DDB3B5FC9525991104AD987F3C4C09381865036BA68B8D86E24D7
41A6B9D06A52A3029C73F01CFC0AB968806374767F2A958F72FFDBC3718D8171
4CB93D54A6D66960DAEE565D17F215CA708DD90A72F82CCFDAAA074323D30BC1
59A45271BDE87303AFF3BCB0BFE61392CD67F972DAAF24E614946118F97A90F8
BBFF60D8C2BCB41C6AA6865F87573D62A637566D50D2FA0BE2B590555BE6A705
C385B08982F96FA452EDC9B1ECE59D78626F062BA8D5130B76B3BE54CB6566F0
006DEB7E1BE503676A4694BFA4D7813E840D7394CA12251519DEC4828CAC4CE1
D1B244F8D4BAE87865E5E4353F5F0A4CD67B662F07E36CB63C9EE8243ABE2DF7
535A9DE1BE3799D697861215741C99EACA0F871E810CED01B515A6D612A712CB
644091D2A34177936D6F8D73ECCEB5B32D9CBAEB8FBFB01084ED9FC39C1ADFB9
4FEAEC654A3E7DBD7E8CB9C4E42051A846CD747D974BD5EEA76713C165B9BE0A
694530EA51AB421C40154D2655023BA46E3EB8DA3BD74D837CBE57FABD484A43
F150EE6F12005B3A373DDDCDB16E211431E4D7F36140A6ACEC1A1D1CE3D9E8A6
8A12A849C4BD904F94E47EBF99BB0356D65A2CBFFC62C6F12EF2589CD01C8A6A
27C9A9825DE3E940AB211EEBBFC0DB142344AFB0255A91FF978E878BB0903A48
4E84ADB2177927B2AC6DC849B42ADAAE937F58E2267601AB6298CF6864AD4358
20D0AC242DDA1D3694F38E07656EED0BE8907C2E66861683C7FB3D7858D3B637
2C1639DC765B1D1269E9EAB752BA92DBA46AD4748C43B702FB5215524014777F
9690491D19F7F6185ED7C80A16223B53F4C32A660C097921E8210874FC8FE76F
F09034B6DD227EA424C98F8E905C9C2D9E9465AB75D3B0592E7223739FECFC52
C63419A7E144C01DDC6A1C059DD408E1C4DDEAE0F0A11BD3F97FBCB8EA3A6ED8
4A8817B582FAE581F9559C9DDE9D29340AF56CFCC66BD5981AC43104735DE8EA
61C73051EA4D002CD5ABBDC31E28D1A26E1D874F63A9004EAB0C8FD1E7E209CF
DC15B28D84FF0D839D40E3A6EF5AA7CBD46F169D5D998DC6AEDAD64F3C5330FD
836F294D416E2AE60BF6A1588621AD596937F94D6C26DCB9583F276D16D4167A
DF80339A1C2C218FB12D5FDC5F71D85BCCD74BCBBF95663FEF31A4B0901EC307
EDBFF4732FA6DC3D899A5F0EDDA808E8634E0A3D97359B8DC0A19EE68E6C21CA
B17864A6F06C7C0EA661E8C1AB6E2950B341A977DF1330084C1043F1F4F6C457
7E0CFDD2895F90F1D6624E1BD04649D50F3CD231A96FCF3A713B55737938DDCA
9A6B9EFFCCFE14E10B6F45A9124277350FB9409ACA7BB8F053A43E6B7A03D39E
63281C82D99AD9A7C083C37DFF77A1A0EC2F3D5BF51E07DDA49B2D697C75CE2B
61A40924AF3360C54D998DA00F9F482FD5370EA7F7FAD76A858B39DD45340FA4
DD91C7578C0598CC5F6F36CCC7A3AF66DADC3660A3FAED823C96FBEFE4CD9A55
3F682040B1AB0B57F3E1CE990223D343DBAB2F81D1FB88B16727470F0705CE32
2430D0AE116C9FC4D1E18CE4A9E980BCC3542200AB5711F5186781E20C1476E2
91F528E53B37044AA6C56D46A23D500F47D8E102F5F4235E9786E0142D569B96
9A705EC949D12E35E5BC0EEE2FA0ECAEB05635D8A9020C43B08A1C13C1AFC27F
057134C2326F7159394A4A04D322C71C1395B3C078A2E2675380B155951E5D14
D3C759A490CE9594FE3DE614EBE737051C55625AD1322901EE9AC53EE8C29B64
3E8BF38EA3C95289B36ED8D51A803CCC000642F8BDFE4FE614BCDD4FCFCDF5E3
CBF6CF86C43BE14730176F73187E01370496588D7D5177614A0FD6ED59655353
89C4F410DC44102E4EA367846368C9EAB17981E2CFCECF3F0D332697857BB2EF
7227FA916AD8B152FCCDB92D0D5852606AF9E7CA7C5C3CD8258BBEBE2957DCE2
A4B6F35B41B18412143BAA4CB2EE86F2D5212CEA35A5B5F65E5CE5B6D1E099AE
F8921BE9E0999164EB3D0A8CA18CBF86B1422BAAECDE821B5600BF2CE83FB7F3
144AAAA53007C88EE674B82B06B7AAE48C2612CC494FD179DFDC88097E7E7844
246A64B86F496CDEFC6B77E00FAA5F09AD7513296E1BABC7ADB991E5291831BF
661120822665BE464E4D90F338A930BF140DA7806B2DE2CA151F5709DE4C8397
21590A17E8A9B9BA49AC10C381928452CA3BE15AE462C9FFE74DD255AAD9462C
306047CEFE6A6DA04E137855458E019215A279EDE1725C408D3A07671B7A8A93
40F92E80BA1ABA2F2D47821A0E9B63A56BBAA05A780D57992EEA9DBCD30CEA77
D069602F6B3C9C6B676B33B753DDA40168BAC45C2F2F023B6FE44AF5342BA782
51DA309AB2D94C2709E08C780BF6A1BD51C8F2C83AF0B8D4394627846CDC1521
ABBEE2929C7F7A40270FE62D084FB5977406011D184AD6DD8D3200F23CFA7D21
3FEB2AFFBE19476E792B0061193A55CEA1CBCD911634150538E91A0A7DA5C4E5
BEAEFD4BE88A421B800A0D251DE37DA8A337152AEE100AF263DEB1EBB54F78A2
70C8EB0E7E1EB79D71864A4F2842A12CC507453958DDB59E18B9247BAF894268
FA513B387A6BCA4FB8C04028691E928D0055B7C2BD669BC5DDE29164E3407EA8
C5907DA0C70B67E6132D63CE3F670D84E7F550A52B30B6F72FC2A94D823E04EA
0F28B7F2AA8291F38640124547FF7391206FB96BFDFDA2B0FC9E7351DD2BF0BD
3A7FE3A7C482D39451B31B103BFE1D8B029CE2EDE8C81CF90B076EB0FA9D5861
87CE501BDAB9691ED2F3D310F4E45D7AE2B71378D0976D4555E8FBF4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR10
%!PS-AdobeFont-1.0: CMR10 003.002
%%Title: CMR10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR10 def
/FontBBox {-40 -250 1009 750 }readonly def
/UniqueID 5000793 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 14 /ffi put
dup 34 /quotedblright put
dup 35 /numbersign put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 61 /equal put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 91 /bracketleft put
dup 92 /quotedblleft put
dup 93 /bracketright put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /endash put
dup 124 /emdash put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D
3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE
4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B650C641D6051E47EB
E7EE41B946B5A54D2990748AAA64237BD4ADA31C10843E1C235AFB36BF1DBB47
A3FC8AC6F98C72AB9F84F3C354A44EE0530145D80BA7810314D977917A4DC4BA
2CC4AB63CD3E87DD7D040E8FBE63D94C9BCB476AD94BA7E4C0AF953BF4821182
D723D9BCC92F2B14A8769B9EFCA8FED9DBF2A836BDC23E27AE1BC097FB3D2297
DD32DFDD7E7BA91C05B33583D92EF193248C70B9B0A260A7959045DE6AB129F9
05F7F25D087EA8024C9F63852A12B46114C581719B4723810DCCC8183D7E6F10
450511BFDF8CD29A57EE9653F2651D54A62141A8142C8B857B0D3E2B9FC5DA3C
38D79A7AFE0B565A57A7C4F52DE6933437EE03D0DC1D286880896392B5C513BD
D76497FD980320FB10E6CE08C3953F99A3618675B04C8EFA2E2DEF4511B4300F
2E5C733D69737C7428840FEA2A1D89133341DE4BD065034F7316B5922CDA4D83
D8804D8DED8CD4409859CB18F45C838D6F18CE8DF82B78C79AD664A57F705D8D
9CF82E48176AB5869BC634B2BC053A299600E1F9CBC66EE5715E9C70D86E6909
ACC25A0858B10DC043CE7A5AEFE9E3F8C28EC36BA0E34F850CAF6C0AF664A142
AC30D3EF7D61C7E85AF9963BC58143F92B5D64DA3F8C8F131B190E8333769BF9
0186F3840565E7C3CDF85409DF3E0134C97837AC17E7F988B62D82E068EFB478
5D8BDEA6D3A49A83886DCCEA341E9B4012EEA7944F69564B5F0EBB5360C067FC
70DE0B05B117732530099ABEC6F1FF955C9F269CB29422AD7A3F2BADFD97CCD6
3624B8E757ABCCEBE5B1F2620B814FA2A3DE2698BF0B06CE3AF4C560DF372AB1
A79B06195FEC5EC862560D6767FD20EC17481FF64AEE679B05EBAB7AC520F240
E2EF71614A3A93D4697747A6BAC42DF8DD4F2AE3CF46F1DA8F0A1A0372C6F83E
5857A31F725B28DE3AD77F1DDF563C4B3E8AA4CF5A1BE4B4D0C672D68ADA4FAB
5DD7F618B1222BE7727547825EFBCA21408C5F84E3E7781B5ECEB19CDA8EC4D2
120A75F8FBE6B0D64D79096233696BFA2AC17072EA6C9F52E42816C85AF34C21
215E72CB2995A8D7B363AAEF5CA4DA8F2567B40B01049191626A4D1CF8BF36EC
BB17A076F501F8A81C0AB9C03E26CAB4684ED1672AB0284500CDDF5BACCB90E7
95EFFE1B505F201112DBFB902B72F566E0C6E1CDB8CA34EED9D5F6A831AAF04F
E092089757CC61819159F7D3AA4123C21C6FC5F56A0D634D0DF2390D6F0CB442
D649D3F76762C4F3F49140D1BDB5E5E19462485F52DAA9CD4A32CEA7C6281EB6
979310262C103A833CF1B393E69BE17EECF31A8D36B6247E10FE60D71DAA0EAE
1B0CD177142080FA5687D01B87AA24ABC3CAE648B69A407E66BAD35866BEEE6B
BD5A238C064A25664DA6A6F7407D0F5BCCF856D1419AB9DF15F1DE86F6072ED5
D31B088F7C1E4451B54041BEA187D705B3D99CFC9E2707D02F4C721B7ACDE325
5CA12E155C9C41F07E81764507E20F83EF6C45771D7EE187BAB92F32E1542F26
F0AE670C260111B76369299A5DAD5E4D11753CE4F2239692F7782E865F4D3739
E02E669AD27633AD9936DCD84192F14287790E822515A98E24A5373C30B5E4FF
5FE4EA0F868E0B1E18FA0B92C402082E216E49D3F598517B197D0D05C9974D86
B435DCE5A4276EDD80BC7EAABB279579DF6742AF516EB3125267D929CE8BE76F
42BCE1F2E4CDD1813257163C88B15E33C3B671A422A78C234FA2E075B9FA9483
F087CE013C9E099C3AD51EB826FF3B34D01186D4CE3B82A57A69AD94FC46B31D
347252804F6C4F5CA2C9BBE16D87C7A070B3DB13F27E7FA18B6D1028ED40265A
2AEC1181DE27937481B72C4CE6818C162250EC13D1FED060F7F5ABA1E3A2D69B
4E5750AFA81AB32C3C1C49BCDF2B2AC566E43458495C1051D2AAF24378427684
B6F226B7DC848F97A1B88EB2BEE17A3E9E9CC51D9A05435B93CA1752F2D5CF25
6101EC0A83496AF0832A7B71B8163B3830C989DF400AA71F370E61D7CAF9E20C
3B21A3A0775EAC753D0CD656FC15842D694DFC860079CA3FD4E9C75A824F5292
56B491252AB21099CA16D5DF449AA1DD44FD202924A95B2634B6AC0CC3397820
5427B54100B1947CC3E44AA1EA09B9D9A9560E5C645215C9CBEC05302F40168E
CAD68257D5C5EDAE4FC01305470160FFA5A9F9467C4DBA2EADC60BB6225D9C36
24C9186EF3B136FB7CABF98AD55FA42B8976AAA5ABF67ABEE3A6F2A937DEF0A2
359122F3E9F7091571FECD771920510053E90470459DDD0C4B5855FD47D19666
640C755B7AACDB8A6BA568E04DBF112EA07129A941D4A6C2BFADF84428FB4DD0
FD0EB7D0FBD3BC15657FCBD4043BBFA3915C53AD8A5BE8492BD192D14C78E242
636CAD3C760D9FCBAFD2157E37A6EB7BB45145DDC5E298E7F639C8B27C1CDF8F
78D035F6DEF33A7556D14D1F75E4410501D370DAE50451FC90F4826FAAF02715
84805688C232D239AE85696AF3B644459B4BD94410871AA666042C11CDEDF020
EE0466F4FD735B7AB94E4C153F2640C32E9E3521D146CE29080AEF3B2BFDCB16
885FC7DDE62033CE401D65DBE2B977E2FC07AC2DE0A96034552D25912EEB6009
6A5436E1E520370A0CC54047A5CBDB888C84A9DA9E06C8B1FF14094FEBC224A7
6EA6736BF65F0922EF282F3745B43982FDB35604BC4363215E5D5B3F737BA615
7B5E1D1D6F256645432B6CF2B9B44D76605EA86B1C5D94372F215649F002A544
FFA277AAC8A5F25413026431BC892F125871674A177BE426AFE8986A3B18EAD7
AA800D5D7CB6532230CFFF984F022FE12D3D466479199C88C53490119121DA14
9C7BFAD59AB019CEBD7F77FD7703ECDBA90B15BBA561DEC2BE7DE6F582A3D803
51CADC90CABBB072DE17C117EBBEF90E592BA739808B2CD705C9E66894D5CFCB
7E8EA54059BB170AD00D19CFEBF7C8993BB1F0B1BED7BD4BEB79C4DBB0E4B6A6
E516FC92D57CD7942D236E72EE413256303898F57EEF40E66F95EE7484EA4767
A901CE079AC1D433741AF24487FB74FC58F8545713325BEEF0FABDDB6C50DF24
852BF04D247CFA5BE75EE797BFBF2BC48075CBF7CC00AD38CE90C43F898C6A85
70E70524F9F7AE089EE09BEE595F4E201DE81CE3FB54CFCBDF383D124AD0A3F9
15958A46754F038108BD7A61E03ADF620D07B0BC2049B3CF610AFEFA026796EB
130B5C45C0F9A1C40DF7FC093F1D8BD82C3D568F06376BB8488EA98D7E7B8B1D
25E46E2FA19C6ECB9CF4F231842480000A90CC422043B8EA7FF2D938A924F210
54DC43848814905D323C803C59603B9AED05B9760DF748EFB1A7A1071CCC95F1
C0DFD32353D4C6B55B1EEB445BDA8C867B5EB7B652D4C20EC662F27818495A0E
DA5DF4A1E25783E9B7F23FA3687F296A261426C32115808EA7F5B266FDE74360
30382F970549F7BC63F4E02A5A1B8F12F3D6EFECE3423DF773F31A59D79EB427
73ABC9DD5B1A5F8F71BA9488C9D2DD211B4E26DDC5285992E62EF99A5FB3A5FC
64D36899C312BCE1CB7C2B0E2BF6971F8B43CFEB4C301E551D708F504E14A71A
5A84844BFC8A8FC424266554331231D60D3930C4375FFCDA28EA3C9D8802AFD1
1FFBB88DFDA43902984DC0719F90217B8FADECB32D48951A4FFFDFB8F5CF4472
87DCF4D6075F64AAABD55EF32527C296B8CA7CBD2F9F6875345F747E13FC8437
42144C46B02A65CE045E860F70F836364005FFF12BA3BAD27A8582549E697B0F
F2A4DD9AD740E8CE533A0528C013A3BF8A415F51E380D3AC9EF4B833D9ADDA38
E0B3406B9614FC0D356FB82F9989E32FC518B674DBBDFC9B0F0DBD32E5A8917B
FCAE8E85112E31C6DFD8E9E4243D64D9CEE445EBC7F8251E3DB40E8C43DBE62A
644039EDE9382C4FE521C75690148274E0CF0F7B55B71CA1EE451BBF176A08D3
C975E227AA9281686D3DA1F50B8E4C288F1F476D6F12356421AFF086687EB18D
C29B334644E0AD43AD08CD79BDA2ADDE7965F6E76A1E5F398FBDFEE1B6CAC914
D1F879ECE6CFABC8D044FE27505269A71AF6F15AAF0CA84C22B2EDB0A3034370
7103EE834ABFC1A17F2212E2ECCA38D4D0C83350D96566A6B0F39FAB2267B770
E61A67FECE25FFCC5CBABA815C35687533A2896E643711A893842D40BFEEA8BD
3911A280726A159358C7A5B25E2907D445AA4B08E97B5BD3466C6897065446F7
65344E0FCFA66182DCB872B6BE7EBD2A2284A2C3E3B1DA10F5A55B3207708704
47C61F2EBB8C69F042F7A5179B55075FCF7B47C540603DCBE9F97A4F2D6F81AC
3A0607D670B46976F47DD878F7B72C32A371B0547403EB63FC9EBF1B518D1CDE
A0FD547418344FE48A782E29E07A1AE9600074CB33AC1F4B82C652B101F0BCA0
E040F776F1EE9F81371ACB9AF0819EEEEFF1853D6A0D3DF1483FFF97794144F0
34FDD5689385832C0E025CCD1672FBD40A3D1394CB31E0B32C249A45664F72F5
6E8FB7BFBA03EC2B1D21E9574454DDDBBA5EDCCDD8577624BBA178289A60ADB2
6FB3C8234DCBE922579864A4B1215BF65B95E7D2B9F4F373FC4F3D921183A3C7
69172BA99467E3FE347A072B05B4A5CD9F0D1C251C4015883FEBDB48EAFDB54E
29670B9C1CE5CDE4850389E5927DEC9B8A936EC8DDB0043B574AC45193F4DF34
CB8E4EBCCB1E24743049A0B0D8327FDDC213EBBEC58028D9D86E7E671CD9E953
D0DE0D1FCB0803B1FB6FC3AACC83777F9CB34F516C3AAB3C3EFA4B5E20A0BBE5
3159298D07A81059375565F6D2FA8493ED06FDFF69B63608837D9A3EA15939D0
C805C9F096525AF996ED2DF229D70B8A72922D04812243F5796F7E062C55876A
287E444085AB570882BA4D1468E22937037B60AE4FE8397CCE7A76934402E80F
214F91274196056921DBACB39D79813897525B54B0E059DDB3544DD6A58E2261
85B50A52F205FFEA9413D78B906519CE917009191EDB2F8771ED80BFD2FEC505
1E8CFA3A02E5DD6F3C4170B620C296510BC7541FE0F57ECCF0F8EAB552380C49
4998191FC0E955192FB71344BE58413460687864C89354EBAA3E29CA7867DE58
B279261FDC69E3EF699FF0B218AC1D27A0EBFD5DD71CA609E6D3707201CFBA9D
F51C6F59B5150C0CD7B7F87FB12E3C77A95FF311AC5CD8BC988B3F7C52C12A56
56C7B3AB6FCE83882B1649E249F15F57F03837FBCA55065D9AEDE59572ED725D
109BB807DEAF24DE5B3D69E9E4336B2440BA69AF5F42CFCA162218BEB50721EC
82B76E4E43FD68FBAFA68B4BFAAB990218EBFBBDA5234731FB97556581359546
CE35D0EEDA37B6913B46A6E4C0FF8D693C7E69DF957592753227873A13C4178A
62C8B12A4DF54F67C1E580158D71EC58741FDEAE5D16822EB9843B64A2B3DBC1
202C2042AAA5DFA457F51458F3BED9E8EE6F28B16F232211C41BB2992237C659
457CA9339977E4D8D46E9618044D8CBCA79664E2A2235DA0BC5D73C82825C4D4
13B34D75F095251A82F8370CAE4C6447311C442A24736FD574047FFAC0F8555C
6C48BAF42AB227B30B8B7066AEB5B7EB99C40AF887D839A719CFBF2D723F01CB
DA491A94BE1717FDAE293AE3C648ACC0C3F3C81A59A6DB39C629DE605D8A5571
8FB7E969401D80E9CFEC9D9736618CE6558A7F3BFAE63B641E7078D71208199F
71569D01909E72041578737B3D2E9A27AFD1CF6B40F213F698549614F03EDE2D
08791017E660CBC061CDD81696F97E8D8839068EB9BB52329A090DB935CF1BE0
922A57096A4526CB56914E7D2CD86C4240D39D6A2A175F8CFA9D939CA9DD44D8
8E843AF28D0C191A8A6978963BD328E9B9606647316BACBCDCA563787F11BC8D
68EBFDDA1B75D1318FD22817CDA9C0CFFE4FDEEE64CCC0C36E3843B35FDCBA3C
EE311806136C7BE66A9403AF26F37D0CA5AE1B0582FBBF277A31B36438A8A0A5
1509A5C452DDB0C9B427618A095EC1FB59C7E7A89BD83D5C39D839F7D45768BD
998F28017672EAD6127D5CD30166FC0EBD3ADBC950EB69B26902549AF8D1AC66
B85AD28208E78C85627B3FA321B9D663E87F0917DFF64ECC61B1EC247F19BFCD
4E3B7655E19ECD2CBB4C28E827F8FD5B0101B804AC06C0D556C5083F061C8C0C
6B255FF6C4B1BE2919B8F61DA709C0206B9BB2ED411E23C0A702303F3FAA6EDF
EC85EB850FF67C7A9AF54A683A8073967378ECCE62DC8A7ACADAF365E308D0AB
917F98CBD9AC0CDE748AFE3EE278396F9737B34513C888D085D581E769007399
560476D95F15C1FB3CB544DF62677ED9148B20BB6FE0FA55B14A99C656EA54C1
49345197B7D1583712A59269C8F547DCD6E716F9FDCA0FE4697010BC330B4CB9
3B55B3955A06D2C30A719D7E0B57CED8EDB33DA0CFF64CAB509DA028D46BD8A6
C8A0013C252AEDA33AC369CBFBE1B05C4E8619DF155E670861F531F499A93C21
34A26D023826DA6981E782CA498E5C7B702D0F34EE1C50E045F144BAB2A717E0
226BC0CF646A6FC8C1C00D4D2F36F7560AD3B6D25E8DA46E8766A9450AE6F6A3
C9935703C4A25A9E38E51CDA85570572EEE3143124783D7C6F034F2902C56D59
96264DA6B634C5A7404A4C5F2939B0D9247E9F5ED43B929A85B7B3EA450159F4
8B2D39D54850CD92092063788700861704702C4B6959617F4266CA1CEB26C48F
04DC9EA7F50FD7F0861ACBD75D9F1430C63B2514BF6BE971B31A11DDFC406A55
DB8A77BE015151ADA1B04191FB4703F8FE907C77937C6585B6DE8C69ED7F226E
BF118643E4698845B194E5AB58435A1C6A83B8CA7DB828E8089028EEBF3B43BF
EF2887F56AFBC998A8BF11A1C751040853A9C4771F93A26B55BE85CB4A29F5BE
064E7A5A6C3C7C95B30754224EF770C9295499CB3B08AFD4647CD4199BCDA9FF
B2E92F5A01D12B07BA72B08A96940FEC7CA97A5DB70C31BB2DF2C3FACDB51426
92156E10186948ACBB1C340D934E45DA10404A6376667BA079DDF5A1AC235EA7
3EB22D017A5A32FCFB655C07C3558DE508E8C7362E2F6312E05E7E2818B49E5D
E977FA964F11FE09DF4DE8BA899E1AA8F67271B17AE52446FDEEF3228FCE22DC
44B7D66F23E40D1ADD183231FF63ECACE07232356CC0B8EBF74A16B3EEE3DEAF
B436E38BF68ACF3DDDC88B329B9D52276333B433FA2CC0422CD381BA0F452C5C
6B99DABBD711F6443FF4F1DE9E096FC9BA0C794F6E84027B0F0FF724BED747C1
35CA566BF14AC9E56FC00EC98CC3401BF9BC7D25FB7289E8608C2AF745341811
7989B3262FB44CEB29D1E5C30C59DE02A61271EF8035E0AC7DC23BF12092E7FF
D5A8CACB1A2AC7DD3903525E1D9A035784E9A2F6D6526B9B0CE8832AA9F6AA6F
98962F75F2A73BC0FCC3CA467ADB3F037FD641F4E35EC400C01AC8DB0059F6D5
31F2FE7C6207EA48C58189A3776DF259B5311D10564FED646515EB8FEF55DB31
27A49E8AEF0A91C10CA9EBD5DC442423FB9105DF40BB174947D458754F842A1A
3FE4AAAB2381274E2DCD33995737E3C8970AA7D22931B5D64194C9783EE90518
BA62C1BF288C539BB701BC547BFAE3FF81214107B124CF6AE03874377192087B
C8B692D0D3F4DE56356F86C773A17B35C2C1E754B1705644A7BE60B85B0AE481
2B1645A6B76EB9554C3E2630180003B0FBCB34362998FA1DC6E2C54ED6314293
6A70A4BB615E1FD298B76B03717F960F50F5F34ACB1BB45E52CCA3FEAFBB6A58
17AA99274D64E4DAD3EE7C5FE8F16376F565524054AA1E9D895C9A45DADF885B
E0F18FCBE5E297E57075394491E44056062EBD8646E98317A784D3B34D18DF1F
64F7D1FE93354627411752B55C4FE88E965BAA9AED66CCC5D89D94C7D43B17A8
7557CD03A536AB8DCCB8CAABC8FA7E5D26C24B10B8645C6B65B5BA8CF2745778
FF37A924539FDDD8C771B1F9BD48EC1C71C9632DFD16F583C49C4DC3708DDF17
DD9F4B5C96FBE9F655600B314E64BC197DBB5AFD53F110AD92A210803DA0AC75
60A2FB1B720D9703E137D6D210E87FBD45ED9954D12DDA60CDDAD4ABAAF6EBD1
A3977A07E359012ED8DE106E05AD81BB32D0509A0C3936CA8E59F96140607EE6
4F773FE509BFA6036A8FA3E8101B4F662EE3B699A01E0F2E715C74A253618E97
8567EBAF390D2B2EC7236528E4C83AA624CD2FE0E25CF48156FC851F6C6699B1
C015C056A2943483B75A88D3BBB27760B78C60670B02B426FD16E882A553FCC5
CFF4FE69700CF028B454257B4E3E8F4029F9757776DA2B154C3BB88F0FDD8AF5
B2AA4FE94107E8DCD7A91D2D82D40BC680E78D0F89DE3C3CE101597AE6BD5282
8582159D98A7B6BFA191FC5D5CE4983FF3320D222668DA4A1F349CA87D2634BC
A2D76D112F95D4A24FD81FB0B9A874B9224DCB5BEE5CBAD0219C6BF7048513E2
AD07530716CE47C6CDACEEB35779866C7D8556D7C8EB3044BD846DB2C7587BBA
B616EF8E31D1CEF154BF73BFBC1360F8A4249FA0B32A8DB1BDA7A60D7780F7A6
0E36C43FDCE43CCF9B67FFC73406F9166586D405B52EDE344A24A38BF251AC4A
D22878EFC6283F7274DFC253B9159F89950423B5F5E45CB5F398F0236CE899F0
9461DB79301BDD16F8695728196060E633967FB725EC795F8FD271536ED52F1E
8EABB8C1DCDACFC1C89746D15F6AEA9A679C73BE3E8DFAC27B2BC55FAA3C2498
AECB3BEC89C6251E187696FDA44D60694760DF02DA60B3242218F98CFE26422C
6460B64009BED312B60B52BF48AB5D2B240D51FDB662B2D22BA5ABECB4B7B261
B38DBFD6E32289AA1F3CBAC2ABF00F1BF3273188C86306E8F8F8743023BC2ACB
F83A0CE484BDD651A058F9941F7AB5D5D5889D45CD6E2F07AEC65A453CE04814
2DEB364AE94A0742FA6EBB22132B3F566325E468F1352B904375FDC02DCE3C5A
0828BAAC41CC856926C3E769B5AC690B322F916B86EB99C010161304EE3EF6B0
A7EBC87F1FCD060AE0528CD32162EB022472A770C1D97D29513B7ED663F8AFD5
2A142F087B3119C1C50A1E83EEBF46F754EFB8E60406EE82B55838D2FB35AE5A
4971F5EA766BD89528B3E71877CA1F36922F4029FCE901B4FB7F337AD1531931
AB96525A76D529F98208E2C75109516EA8F94C14E0D09DD221BA6B00446AB4A9
64878088BB78CD9EBBAFCC6AEBCF7A631545BC4FB8F767A316D48F39511523E0
44B797FBE4455729794FA774589F1732B93E2B81DCFDAAF4F25CCC50DC88210A
661AABD915410B83515A46F0BFA1CCF109666D9EBB9CE9789490B6E3A49B127A
9368C9CBA24A70E4F6DC5244D4A1AA2F2D1D01252EAD98C3E8A3DBB3214E61FA
2288DB511F2B8597CF20568361053884F96ABB2934E2A66573864E9EC6DD57A3
73C2231656252B7AD535DE28F46AC87A9B7A1E32815510FDA2168E14A42E6964
D181F540DCC7D9D4553522089FBECF8C9E2FB763F9B98EB1502FDA0071E92198
F62C9EFB94365BBE2EA1E5620FA45824384F7A7E4176A421BB60E89BE347B4DA
F579C9618E3171187AA3D138AA9C02FAE5F3124BB26B09E99B6B5E0617E73EB2
A2CE438B7DDF4755C919F2B566ED87873C3772A3EC99466BF3CA24E4724A15C9
9E5F07A6D0B9F776945A8D52B292FBC9C35EC00DF9F66B173F7A454DEF7F823A
13E4CDE0DA336B4C454902A5FBD0962AAE0FF7D0C0D1485D558864D5E81E51C5
C4B85A4ADD060D9C694256DA9EF3C2D06A5D506A2AB749A0012D63D1BA4470D2
A5B44B55B19E54ACA9EDE7B5ED059D7E858D802A1517D9C6FDA3F9CA5EC83B60
A2CF82EA3B3890FDC258031FEF8E31736E1240481AE23E918D57A74E5CE34270
2B7AD5946929CC2EE24AEC5B952088D7E0583E58F4E88A2CA94B0B566804BCC8
D66AAA09444869DFED11217647FD2842F08041775AAEFC28C2A7E8A22F20B95B
6DDD54026FFBC66C4CBFCE82357846812949AA33D4485F96EC91BB0C26B11509
0DA96BCC4F0E492F9E944840F892C9669B55A830DDD392F93F6CE197392523FC
C1FEF047BE743075BD6191251823012E21D7B187D947DD8FB55E8795F6DF57B0
75331F6B975FF1C9E6B9D3AC8F8FB6F5A7F57C24FF18BADDABD6A94834A0AAD5
DAAA6778EE4970574844ABADC2722BF433C8611A5528CB16E795A86FDA9F8BDA
03D306AB816727C4810C301292CFD66874189FAF2EAB3806B89C4A01EE50EA25
2BA8B4A7CE66159C64781D9E606FB03288B6D9A41AD680F92E35265F2E0F37E0
E981F879B7944027C326C8F0C8154FEC04A5F5E4ACA04BA7EA5EBCA5FC119321
CDA4E119BCA305ED8B5FD8E5AF2B578183FF30CDFC5AB855D56C81FD4393B3F2
C7B306DC7A1B2EA4CEB8E2C001CBB96EA304F52E5FCA387B046A49762F47CEB3
C8A3801BABA6657292CB913B033500B105065D47737B02ABC59891D875D984A3
A706C5319FF17FCA66BEFE1EED550C62C78C152FA4ABF53BD1A287CC05EFA846
E649A0A92A728A7F21E610383CEE0FC71613E5AD71112B17B63054146F21E6C5
865397DEA5DBF399D3B1D8897E690AB85108F596E74739416454DE05DD533E76
F18BBCFAF19318E7F6ECFFCEA8628F1B645927B82F01E719D0BDE898CF3288A9
2875A9A7603C858EEC025C90ED1E94204979FEBA1EA46A23DB6CA0CBBB554379
5C6E6E2CB0B17EDEC20126956081A7028E6F4E33F7D0A25E5C6312AC44277313
F211CA5F46A39CF470242DBEBE0E229E27B765D5BE84FC58429CC1F96F4FB661
D9E4BEE44C2927982FE7F3265BCC865E5CBEF99438A2EF8990A5D18D27388989
FA0D9C4BAC59B1F54DE8843D66850AA552E5247E88752A7F2832764F716C9A37
66AE174563DA67891398B2897EBF8A1E73C7A90929E44FFE04A71595D936AE62
2EA684D1D81CC5A3FB804C9756F3AD513D61B9263333A4EBB74CEAE3A6F116AC
3946E5CDE9C62FAD6A5ABF8D4408A34B24F872E76300FBCE3DE3AD0697E0FBCB
8D2A6DDDDC91ABD97958760F9C3D09919442ED96A0F71D3FD036B053E4B88286
5883AAB388B669C31D5AD0948B12CEF455D65D798EE1497D8F5C761D0309402B
354D3F49D1F52105C7AC28BFA5699BAFE8692E27213568F635FF2F8A060BE7A6
A39AA94841E350EB01E16E2AB73D6F7C92FDD877FE5AE053A92B95B4801C5511
27D20A574EBC67E86F4A4B2FA2047F4629E483A5C19C45BB4AF3471220A3341E
B9491CAFFBF8A77092508F95C94E611B8D02FA55C84039E99C63E413CFBB605A
4949F10D87AEC905C567849A9BE82F1191B24CA0C244ADD321CB1A6C8C7C8728
660AF0EBE3BCBAF24EA7CA52B34E7DFD987F968FA69ED06C885B5F19BEE8FA25
53836120B2B0A9559E2B937BFCE6A193CCD044EC3B0F37D3A5CEF2F4933C87BF
01D10C0ED40842B7B23AD3CC4B3E65A477BCA53FA8AA7CFEF9D24A2F1B32EDBC
13E336155CCFE4D0154A6E9A547E4108BB987D832FA7E3D696B97D6C8DBEF95C
7C95FEEF98B2F6D6F4A1781E7BFAACE5CEFC863B864B46462796BC94E4924BC6
585AC75D7DDB250E57C281A9D5483B57F09E96485AC988D21E170792C5EBBFAD
5DC1F3CCE35D98305B1E1DB7E8FEA047F1F44C9827E1317F1A8158F07F9D73A8
D899B271CDA348AADE79C2D0258CBE2CE1E6C537D4B5BB5EF5C5263EDE19F588
FD33A672DABB000E567E0110BD21503A429EF3CF2C2D6CFE54F5401DD6BACCEA
1A5F7074E66CC69FE3CEDDC22B1A49914E966423BC07A94EC08BEE657206E238
D3FC82CBCEB8CB60CAB23E8DC15C98C46A8DBACAFAF07BCAB9A8A276F033FAF2
839AC29E5AC18AFAC0C0A5BC103152AA9364C21BB45E0E27C08BAD83A7EF75F3
A527BEFA9911847481B0AEF200D5EEAAD8F0A284FB09D2A8E94D0ADBB62F694F
C6051E63E37A73304A11F3FF399EA9FD1C83D94CA6B134FEA748B05793605C95
18D75719082A86A864A09D04F13CCA0AEC6CAA8C2433D5CAAB74C86843959627
16D3A12BD02BD5F36043586813626D7A7FB7ACCF091E8CEEDB13F310D51A1433
8BC246837AF6199022A0B0C5944F23CF237F2728BA702EA5B4AA7709AF2B990D
03FF80686F0931DB619445F5175780CB762A7A4B8325ECE22676CD8E60CCD7F6
175F67E0628E29FBBDC2FE0F0B2E9D7884B96D23EE669985A8B1581552828764
4B7AC761F8F6795D0FCD83F34729499205347E3F2323BDFA333CEADF0421B2C5
547523E2843C0108E8B9062DA4B1F335920CFB9D34AEB69B3968E41DF974AB6B
C96B284FD2A8645DA7CD14F2CB11453C0DFAAD91E9C3A32EDBAF9CCED0D12F5C
F54283097C71BD30AF1419D39057F9527DFB45ACC3A53D722379F4C70774D6B0
39D50DF5968CDEF0F4F8EB5D45B75DB6F271E9294900BC5E528003A2DC608AED
C5978760811EEE91F833852C22A6DFAFE6FD1F8D53248196848F0F5D93C9ED5C
0EA231C7A000320403C64242CDA27ECFCDF0D265CA1E8AC4246E04F95484F06A
AEF615D6FF22296535B0523CC6561DEB3BC47872213665E4CF87B266C16160A4
443CF494BC1761007083A4B2EA5DB82D893EAE0E06DE06225967BB908614B120
EC45BC101026805CDF1E74A1E2EE56C7DAC1FE7882BC8AC55C2ED4754930DA7F
FFD455E010657E364DBBC4C4DA05B8B3AF91A60CBFD2486ACCC641F809EAB10A
71454888E6B0DC5A39E7779BC4A267406E0F34CC75B48976F075E87204E400F9
70AA5A565EB12A2858F3CAFA1CA3C07139F17F56988E4C1582BE460B0DCF7E1E
3F01FA984127F99B33A637C034E5CD63D3B00DB4F5CE83B95C4A5CB1BF26F8AE
80BEED321DA61C8A7E28AA389768290A90A5FC5EBF07E617E3FB1C579596D653
4972E5B355C4B9621DA5A78170D9354A6AAE0C3D74F31EA8CAA83E872AC95D53
3BE3671B27E5F65A95645AAD62360AEE1AC32E30EC1472FF7D725B4D8CA0FAA6
DFD53C19DE46AE39797F4586FFCE66EC22F7DD37132308A85BF21906D514F281
E35E9B639E116B63919FA1A41CB716A80684023B0332988CAB3A6DA26A7020B7
2D3801EB2C666E3AFDE1BCBB69BA807DC45CEFFBE774BD461DCA50A8E9F8655C
C347D830D34FD62DEFCFD4C6D08C7BA0FA938AFCED994D57DB29C6CEA22ADFE6
EBF06D5F6D31FBAD02EB198FAED70EBCFB92E36DEDEE3E73B100284F2CE49158
B58ABAE6CF03C4418D3BEA80BFE0F81F9DBF726A1693DFCC694941A64FCFB790
C87BE9F01AFF40A96726270A353D53A0CE4018AD20B49F139FD35AAC9B6BCDE5
413E531212AD7E8B39356221D5DD6E0378A1F7D1A2F8C9532951441874832251
753F7A7356B7EA41FD6FC48CA8E4FA7D21319AC939AC568DC641C7A4EF2FCD9A
D4A6976D213C994CA59D2380F9C6639A4E173D600FC66938A257C7E8E5F07ADE
941810C0F813C3D715C59397AEEC94FD93D0EF30914CF309313B1B80E50DD1CA
3CE902631A6447990B416D8F2757649DCB29156CBB477EF82635746B106ACE3E
31333862FE1E0F8417D394A5BDDBA3823363C2DB9A952963C9B2584CE1499D51
7364CEA04721B6160356683298E586C6BDBAB0C48261F68F5F8EF1978D70CFDA
42267B2602081D0EE8FA42A21A87E1100B2D2F20193143368D4CFD9700723778
AE97D4A2172C16055A6D272DC825AF19D94DAF1949CA000B9B346BF616A1F3F2
5FD11B7091D5482F010C0BA9D4252ABC3686EE0A9B9F323A06704F66FEE63FD5
41F53DA248AF02A31AC4158479690A4FFCEC4AF7E2852692398A09639ABAA897
12B58DBE2ED25466353CDB404D02E01673FBEEE2E82B4C10884558DC739AE485
2D6E17BE15F07F6152C2CCB2FB53FBA420AFB6B0A6C2757E082FBC83577EE8CC
4B0E6A231919C9B9D50A94050B14D41F2B207C17DA08E2D67FB06EB89862E35E
A7B62AA17E7D60278B500F8EC06926F87075B9B2CEAD866CF9E259D853ADD840
B4D9A3C1B2B8302252C3AAFAACBAE40B78652CCC0A6CE82F6CB6D7955E6CAB5D
B089993590F205953598EA84B8F864E3D28EB12339AD1190EBD14DCB9E87E779
3FB8B9A2EA3CFD8A7E41167399ACFB48B50BA9163D9AB69392B825B0D302B1CB
5F32655AE721BA5EEA5F047A0A4EED9BE018855D5153EC91F2C1B0D70075AD1A
537BA8340C8B3B57C8A0DC7A833CEF8A44373C497DE3769A8BB2BB71CB6231D7
68D569A05B1B055976C8768A1DB1F0EFB7DC3C64ABE374332C3AB960B54F90AB
16CFFA3F66FAFB775D4B01740F69D605578700FBDD999B759F994BBBE9167E5D
797828BF040FCF51426B1B7581B28214D41C75497C58E844D992B5A2FA64051C
E74345095D917D484E531540D01412610EF53FCBF7CA69045728AD09551FAE4A
58946D9E08A7432838B11F587EFB65E6A4C4981D20AE8A5505ABD367BC22C9E4
BCAFF0F59AC18B14A3C6DA39B1A21704276B00C684371EBCE50D02810FF587B6
DE696212EF28DB59D3A1647F2FFE9DD623B272CB48C9D23D8D0E13294307CC22
6BAC669873EFF1EE766DE18C8E3088973176984E283E339FA0BF40DC9A56876A
E71C7F019CADAEAF19E0439676968667023856366861D20E061FB28346B8DD1D
6229F87D45336C701346FF46A8015AEF6A3A694EB7737C9E46FD1B1C392ECB65
799C5EF2EF8776C614DF262B69328E4554F0FC18F427D430E8F03F03021BD2B9
386E758B341A3CF1520BDD897F5D43C7BD4EE41122D5A824869CE195786AE7F0
66CD1C901474FD5A141A510C767C8D7127F01AC767B2EDEC008032A469806466
4A08D59331A5D272CC4C3ED8EABFF284CFAF5DB7D500EC78513203B9D0E83607
B69A1CB60F650F1469ADC83DAE68D44F7F1A218E7A786AD35711C34B3BE3D57F
5CDB39C3FD75A58263683701AF06794C4254ED53240B558221952F85CFA5690B
E7B4CA99D9AB78A61206EE5BCB71B4B2A13BC330422CB2F0C30DB8668228BD82
DE157A26997332F6B013D4BC90D644373E2A44D1764825884727DE8A6C947165
A9F8A4534FAD2A7DD522898E38988040DC3E7ABED51113DE58FC837F5BE0CFE7
C14BC732C011154762A926F12D0295657EA3DA9F1C7489BC37EFE8FE4B9115A5
F43ADEDD427AE32403361CA7364EF1E8D977EBC30AA129483E07C15E78E598B9
20373BEF76471A26591D35A52F741A12AB8394A51E55BBB9C8516DCE2EFAF5A6
894FCDEE7900699FBF61414E0C72B279E576D3EC9EDABFDB1CAFF5FB27F5C1C1
AC6F9470077ADB0ADE415B6E2EE4DEEA1C6220ACA03F9EDE91A0CEFA9DCAB074
8B09896803244E04F6FBCD751AD3BB952C2223343620709E460B3D0EE83CD124
DA6A6EF604ACAC2C958050B76C62A1C0A683E428EE2BA50050C3D884938B08A4
DC0F77769015FACB442548BB518004A39812CA45292EC8D962D89E0D41BAA9D5
3295E1CB35C9A5B1730570C996D9FDCD45F8CF76656115233B47606FB71BC7E2
C78D6DE2F6CE4F7D0E5C96D1219993638D5CD41E296BA5F9FCA5540235CA91E5
75C2F8A39451CB17BB00F52E0A281A732AFABBCC55BF22F5811A29E245D8E35C
6F5F154E5012DFF82077BB09E39762ED4BB610D9ACDD6F45DD4A0B95BAE83707
D7599640BE0592F58749BE6D7CFC5F531C29ED149B4C7705016914B6C8572157
1929EA7B336872CECD3C3603B25D4A975B3A0D72A8372AA57F770B13DDE23A26
676A4ECCB136B08C35242641CED6B4B2D6C8FEEA47E90F79F25468C07CDBB2AE
49CA8A6B32274F754906B3EB80E007B02648C10B9E428CB52C5C9153EE9F0121
741EF155AB6B01C3A0D0C2D0B80A634E887CE7AB3827A04FEDCF88C226DEC398
85B130DC8EB472AE325BA9F2D3B9AEC831BF62FAC44A4173FD3D6CD325F290F4
96482E7243CAB9731E66B4DA7DADBB4A92309D50F01DBCE3EDB57375C4FE3C20
977F0956B179F7820C82E342D90FADE3408BFD10237575E4C998608C650E6A57
B399FCB13492956D3E68D502CB4DD1745540A74F89266E42233E341567D49554
53D7B9ED47B8242010DD4A7BCDDD37777FDF7AB4629E85AEE446FEB8CB87BAA2
A007F1AA53F693CAA764978E5912E7DE0DF1DB67EDD3D6CDFEEA9FE31864E14F
8CAFD969B8B82FB0DC832A87FCFD7C6C2E9B5F63E0A43CCF07FB5C514C596048
FF67FA6A6A626562FDEF71DA6C69B91B44AA40EEA9EF40880933317BFA2A96D7
9CBA63E7FEF85280571147EDB7EFEB1D781852E05364DFD6340EBF8CDCDD3408
FAE1013BB1F14B3096476E6148C26447FF2B71EC129097E0665A3E695461B0CE
BAD95965502A66F4876590EFE5860F5F5BC07A5D5CD7B4239EABC90EDD0AF9D7
33FF9FA5F2210DCE67D64C098CBBDE1A9E7B52938F7FCFD5DB18EA7CA9EBE8FD
C472F8F801A548A930006A13A08EC218D07492DBEB92A366685F8B326506BF0A
FF95E5E2BA1F9E130E1C47D15CD63F688FC1A738FBFECBFE4BF413250339156C
525951FB9B6FEE1351A5FFB8C9B231DF2333AE6445A933038662BF0FBFF60202
A78B7D9BE4BEED755E363DC49033962878E40B6CB6716A39469DD473DAA97902
4222D84F10296EF6595153AF15A34AAD38DB1A9C33CDF3CE32C76D9E789F5F54
82C9646A93142C6ADCFF7AA793B952863938758A19661381D57B1DA0FB1DAA76
5AAA80D90CD30221D561DF0B243130623C07DAB4C8FE6A8824938ABC037E78F8
51303DE7B59A56DD96DB4A0E7099D40B14E1D2A8B30684047BB013320C9D2D27
E6642739F8BBC5BE3FF663BBB48DA190662C5B6117D28F0E84154A8A267B774D
537B319811CA204A4A1BCFAB7FE8B6D2F8D7D24FF7B98A7EEF83539B32524FDB
13C3316FCF76D5FB9D29B137FB798EBD742EB755C212A2145163F08866F518B1
7069916037B5E0751F8D13264D7FAB210D1C4385C11992AA811E8107154A8B76
49293AA72980CFB4CF3D13A7D2A7DDEB30A7D4FA2444E1BC690652BE41C049AE
AC34EC1F5520215497E2359C1CCB71CD2B53EBB656B4D36F6A8CC514FBBC1F21
1F32D017D7B8AB1F3321365AB5D8BFEF772EE696453EC8EC93AFE0C82BA7C300
16DFF5A9797C4C0CA8B22A40753CAEB790DF5D3927DE662A782EA71E752055DF
46C2EB79B1CD7252091396A2A48073CACE042B75F4ED97986600D432BD5DD85A
5824B8E18FE1254D2B3A8AC8D45655158B8A6EDE5A5B2BCAA36925B0087D3399
1F5456C58682261020AC3882B46ED09D6CDB328977A2F5D9D63885AFC7733AA9
C4952245B01530F1426A5CAB0F16BA5D68150FA463170290DF606750DD5F4579
91BB0D1E1DCB7D9CCA62908B09C90BE56A7BD616060E6ECDA729FDAA39692245
ECB6570151CC73016377309C284143424AC610355980D62C55015D113CC40B18
12254661B15A87B7EC45DC7B15F7EFB12E3DF054DADC520F5EBA07A0C351C7F7
E2C89DB996CB673B19A10E4559DFBA94D08B587A3A6C97E8910C5178599892CC
E7D56DAF401DA69439C3A89F0BB5B79CC5341DFDDF1C559D3BEEAD57BB011420
0030806D66E81CFF60DED71DEDEF03D17A8878D69C2E006B76E21EE0CDD33797
4C32BF4E18B42D3F965F339FBA2996C3EF91BB894DE33C486D0096FAF042B892
9838336E12A23881F5D445AC76BDCA385981A7F1ECF0477D8FDE01B6D6FA8042
CA4217EE5765E27171F647D5D7370827E61E73D00007F99E8DF452B6EFACDB93
EB347C3073720D26D4380B32B08D94EFE72940A08AB5346C5E53697382B4589F
2241B092FB43A546BA797201949D7B3E18BCC0173E67FF4AB1E21F55B8E3E922
376B5DF96D9D4A0F03731C32E982DD4882EB673238FECCE92979AC62045EAB19
D02289CC9D020475C8BC32584A6538304BA5E062DB7859E5B09B00F49A2F36B8
C746C5ECA57E80413831A369CBB989D5DAD09F276033E858EC21E47D34C70C3C
E4C287BC674FA92845639E0FE018B1CE5D53485B2E17181945A9FED272FEEBB6
9D497409E052499FF0152D29A91FBFF0DD4AF08F95B5FCB607B6AB65E7C514B6
776A3F391910249297A22D3759C739C50A8B2FC17F4EA8C86AC1F735E6B82A7A
A4CFAC8BABC2EEB04D2A1360FBB94D287936DEDCB6760AB9D573A4314EEABE85
DB9DDACED0A6711E33E009F91FB41095EA66DE3EB328826CE8A13D959381FADD
1FB1BA1C35919E7232C05DA3B3EC154553896D6CAAFFE2CD10E6292A60A7F42B
AD859189B4AFDC26E43A1AF4CB20F6948C4F49AA8F148EA12B8FDBB35BED688C
DCFFDF9C6617D8ABD58F25A4E981B18E5938A023DA48AE1775F22A8213622E6B
91C3B87FE297C10F7BC49527780D16A3082A0531A6D63F72FF814E6C15DB2E1F
803D0C35CE45FDDB73331911B15F87F0200A1996E0A616D7039DD1CEB01EB5B2
E133E39A5559376ECABEBB56C362195EE5DF7F3470A1016E62BDB08959786677
60DB73818E5CA63A18F6E73085359ACB8FBE1D2F5A4EBA287043148DCAF7FBA6
72328986FF5B5682A0540AE8A5C00FBB155E8A76D8C3A2FB2075A2599B91CA18
833E7F458C56C46ACA9FB2C989E46BB95267F8E4866A4970BD0FFEDA790547FF
23C860C2339F807B5D417D8E7B53A4B27E134DE0E3D8637D279C3FD00E020ED5
D1C6C7D191841704050D357DDA7CE219CBCD47130E9463416F325A56A6DCF67B
86CFDA4AEF92A3CF3B8D0579E8A5734479D8975EF48A15AE1ABC33B6987091D3
709FA4C14EEE029EDD41F0ED5C37371EEE68A14967F9DA295F463477DBCE24FE
13F09325B9F504A1D0F881677A9697FD5C314753BCDC62194BF44B1BF50BA1CD
433606BBC7E43784316BA9BA47AF13EEE580B20CE24ED96E7E3F5FB81E4194DD
97AAB2D66BDBB6ABAFA6D5ADE814E3EA606120D581E9F3F68DC64A7E337F17FA
425DFC88D767ABE1A997C99BA8E3F4CCD15B86B4038A4BBEFE2BBE77B5D55CB0
2D859D127409C89D8A1DB614F672323C3D540C5A350EE008C0090184E874C606
65C64E12AD1415AEA59B28D6E17A5E3E7A1BF5D3530BCDC8E50B6720A4494A02
8616C899C6DC90DAF01A2B478FA378211EC8C9880247C906622A8A77A7CB1FAC
7C6DC3193B07AF4F2E9EECC973D7DEA895C032F7ABEC1FD5C09F422536D090A4
E2F7578349AC55529E939B79CF509687A852E0C4B361CF1BD3D1D3B0328C467D
592253C66B7B8749830F5501893C4C0790795FD6A90178877B369ED878C348B2
A1F515DA0159C96177D9003A23702A4959796A44D5FF2DC545E912E33FB913D8
50F155C0FEE8DB409DBBE3DB2BBCDD1AB200F613309E05B5C48B847C3192857D
2714C28E5A44896D83AB7C7BE0752E228B33197F2C5D5440C74F31670E4756AC
45167F5C79FBA7CDF9B08193426AE58B53EEEC29AB8FE5D520B3562341654109
2D7F7AD671A8F9FC10BBD6C392D119BB938622F2EA6DE3F00575F4D6CF6D06EB
AFA20A0723DB85F527537C3FD995C60C61476498EFE4241A06F93DA70228017C
51FEFEF25D0F11CAE819EF8D0BDAF5792893B4528161E7C91C78970B1580B93E
D54E15EDC8D0A40BDE7A2A49365C2335EF1CF690C8B5441F57AFF511B5B5872A
4E5E5DDC4797EEFA1CB13246E27B993FAC9FA3A8FD778C9C0C2157A313247CAE
C9B50D14D3BA56EF6C66F116EC778BCBA8A53185BE5B1A95525271BC13B520B2
B972E77E609BF938B07C554A6D09CE0A3540EDFA6B4FE6BD73A5E0CE959C611E
464D15562388D25CAEF687DBC7576B48EC63B4AAAAD991BBB697591A42F7A9F7
28DB6B7FF5DB3C09D211D5ED60B33455EFF5A2C530793CD296BB836C8C137E51
51F9B9863F69FAE9630D82694002ECE3FCE9A8E7916FD1AF5ABCB503A93EBE57
5928E279B36AD3A5C7E6B22367D4A092E7D2182DD64458F6D560C04520A19501
B66AFC753686621421E2B0DE3A917D9CFEA7A2555D8816865B8F7E53991D2C9A
45F9ED6A097E0B3454C59EB6A804504F016AA86F95219077BEE50E1EECD7FF9F
9FB0956F51039465B9FB757183A7002BC8190186FC17374E73C523B9D6F0AA82
92F7680614B43C6B70DB8C596690032ABB45F6C71AFE0AF71BF7A1733F8EB811
6B9B010D751B6B6C88CAA6CF3886AFB0007F7B5D5D7E63D10B7A22369FBAB6D8
DA27D4F7758AEBC7399FF004ACBAEEF1AD83BFA89BC3FDBFAC572601C9C14D30
BA01D19FC29E5172AA25551534F3DC2B344284EDE0C7E4E9360435CC3F14E4F4
7F049F834CA83B90B19D77F8D71166421449260BC0BD5830999019869861E69C
344A203DB405134569151464AE91663996121ED8A73673EDA44A3A96C5744ED8
26A139458644D9E2EB25910CE8CED25074A6398E12D96D55E5033995C9119AC8
2FEE2B545CE5AC32447B3EB8E1FCA184AA3FFB52BCC8A1FD1AD8CBBE7D08E539
F3AD9826B1B2FA17F97000304CE2B362AB74B15B797CE9F2A0B80C48EB5062F7
E01A00595549396781E7F238A1E9D83CD57878FE8EC3A252000F9CEBADA9B27F
06646AF3890D311D42F71061FE39E1D6251FB6EADEA5EBC9DE866B03FF78E4B1
CC80B037B27D246D5512F8E4D243708B7CB578C2417AD2A373E60F49021B8289
F1F6A1B519FEE05570886AFE70FE69A4626F319F192231919E6BFACE2BE6E534
06746CF5F9716A51BFBC3642AAE005382FCD1B6BBB284A6E042D5AFD78B81823
2335B5DE2320DEC00566DC127E4D415947C02F18FD7500A8075ACC11C573D7C2
0D5B74B17B97D2D0ED99D00E7CF977180C1FC103B7890A51903E25ED9080508C
E3FBB00AFD50D8AD9A03DF29F635E11649F4D8937D8E87E0D6258C2E89B77A7B
736958F19E3940062C540E14EA2278A65E36711C4F5617DD97B6F8FDC7418B89
FE472B2DD912059D89EF52A98E7E77634F96048325DCFAFFD7EA03C75DEC61E4
B0C3853432FEEED505842DE204F6FCFDCEA1C6B3B5E67AA974EFD823393A005A
97F6AAC4C628EB802532C43B6BB4CE89AF1E6F8B7F840771BBDAC14094CFEB5C
8E86A7F8AA0757C69CDC791E5F12113F0A495CC0486D18C10CBA8B4EACB6C2E9
A3CE1FA8129FDA7708C4FF11C7D551FAB22B028D4E30AD0ED8D9D4A059CC7F50
7CCD70677001A87806DCB93C83B6901D04CDC172E6C254B59FB5B646BEF29C94
DE79EAA1340FA2F95635790EC28F87BDE9EC41838A4784DC87B5F25BB3E9053E
0D9D83CD8DAF384EFC9466CE975B88B707A0F53CB4BDA174799E12E05A90A724
775DE124974359B6E3B659D2881F728A576F0C03500C536C76494D354CFAAD46
2C156FC3374074A930B4D794B5E706000586CC5E4598B0173B056A89A7BD137C
ACEED7C4EB3BBAD0638C7416FD453348AE453255825D4E0E565F878DE4E5FFD7
15A526AF0730ED588181E253CB5F03BD94FBBED160195A927074FFC3E55747D8
D008BC1CE32995106413A19CB360D97B7D2418F355F11BD986B242056DE45F49
F346B5CA74A40D210435075AFB7F8CD972D54078AE36F6AFDFCAEC7054A1AC7A
F79F75409F8A7798EB3434A94D5702C1F2F92D7909374C2AADAA24486F3AA15A
687FE6F65FE3B70CCF8C531C0E45E57FF6C029BF7ABF561D2EF0B1ED2CCF111E
44282D51B1BB3CC00BA5224303110920C0F412BED138ABAD0FB12DC32284FC58
599B7054B250AAF8895092BCBE775B65742C595DA89040766EADE00005B6046B
349613F28CE3050F314F992751668339C1FB0AE3C2040391329434D2F01E5E20
21BFE6475AFB1C0E9C9C5337CCD759B3D320274690DFB7C7F9DD484B4EB6D59F
8A507CA25E88680115551D5CD9D370F8239623771C904EFA2B437F55FFF21843
7C0BAC3E6F079DF35BB09F88EC1E3980A3438340A2FE48AEFD51525DA4A9E599
6BF3561EC348300E83EF6429308EC2CC9AD31A5F912E32D314168A295980CD2A
8BB7106356EB00CA2CA786F0F3BB5AEC3CD47D03416145976534043D6D984D21
E083E90617E56E5E5A619186A4160214DD176F5B590E3D455A356E3161EE6A0A
0AD260721D098D7A1112FA81F257ED52ADE70C2C65D5FDEEFFC496C7C5368455
FDCFBC6F485C15B1890D1E31E40F2F95341082B888E32EF94A34BCAF7B3EA107
13745A9C4E23DD2B58F76810A2A2DFE31AA26ED9E0188B21209ACA7D72F1825B
D3B057754A822B730FC6C3A32A371050B6F044C4F947F39643B32AC827544ED0
3A69C1657D82CCBFB05EABB932AC3DE361745AB76B9BDA08FC557F2C560999E6
0041AEA946737936EFBF9DC5D83AB269E51F324E6CAFBC013585271342A83279
36E7672646BA3604F793A0970CBE732463520CA8DEDDA673069F30375D5FB965
643E3150F41F95FE686BE515D0EBB017AA7958EE69AA3B39353C7D7E138BF828
7C383B13DCCD84AAEA7F042E4EC0EF96D61D7891282310ECE6529B96949B6B18
64693D32660DF4BF584B14B733755A403A356974217FEC1B8238895DC4C82557
0214496BD270E57A6DA9D1073FD24DB444848E25ABA74612C0934E69C6FCE7CE
BD9FF7B62EBF9F93FEFA94A7F723E5784164D6AE3A736C84758CD038DC199BFC
06D5F459AFA09DD6B759DEC94E89BA948E02F0B618A3C4A647B9697E42AD8FFA
1A0E38DB7B0A507EC3DBD7333F955B2A1F2D17D9ADC5291C8A6219F0A35672A7
3BCE9CFEF340FED66FE22450205E151EC1EB5E8DBB89E6719050DD5B42D1C4AC
61DE26A10185DAEE4DF997633E5348AC1F1B68B46CDB044C4BA8953A1304201C
E4915FED21CF91569CDA3BE5B80307866732C20ADC67FB7A6E125636EAA55FD8
F337AA2441BF8265BE5B2C755CE41E52E879AF9626DA87790C7E7B8D435220F3
23EB853B485E8D0B3BE87BE0881E8A738F07A42491C5EF4FCA6D681928A2AFE4
1342ED64DF7EF26C53C17F02CB05A4B978E14983EB41893E20E66097EA01E3B1
DDABB3C709F3A5DC338C14B142774C14F3B6699A5B64EAC7FEE09C6B1990FB63
883E91D138A666EFE8B964BCA5D1533FCB1517DDA65C73CF35673C678C846FD7
B79A4B62ADA444E3ADF28D47C017CA64BB4E4D0A67307E8C2E487930A2F93926
8D5D067915A113583D5894A5E4BCF616D3DEF62A76EAFD47DF2614FC58AEBEA3
166AF73E75E48B1FF3F963E9C8B8248C71BF51D5D37C3B16D30DFA1BD5C38BD9
4DA94BFA8945D6EE4616E929D46C11C7EC1919EA8EC447B9C1FBAA7C08982A50
B923DF9738F8484DA13F52B63700484616CF8E48E7F8969ABA23E9625B300C03
7D322A78670E70729004A12BDAF905B4D574FECBFF3708CFB1901ED8AC050BFC
EA63DC6EB75E8292CBF0B56986E5C5B79E114F43671E9FA7DCAA190FD764324E
FA15642D173C3159ABA73674F8D828151D8215B56EFDAB3EE1D80E93C58903C4
B521AC08AC9AE883CD4772A6418B12E568B0C19C6A188380BF74C594873A62F3
B817AB603A6EA624D94375F58BA4DA5C98C9B9CA7E3D2F97D8C7556834DD3F66
EF5290F1B0715DDB0E7F704704E23448E711F1DECDE73F206BB233F4AA519024
6B7F50A21DBBADA8BDC83D1B1464D4F92CC532784BC82F010D613247CC5D8C8D
373E6E4AD81C40F29B8E218B4BC204AFD0CA850B9A5C9492DD13B24556712CCB
D257397797B1F5E1DFD30FF2DCF55BFEC87CB4290199F888502C608DDC2397B7
62968147183F95655D89A7D4A68F552F1199592FD4AD3981077BFAD24F2623A9
1CB26C04033914ED25102B5E7AAC2CD521E1962E413F329508101380A6FE70C0
F307B702898EA2932CDC2CDC0755DDF6C0280A48E39EDCAE93C826A291E80478
9EA38A075DEDCC47B10DC462729BBBC4EC229BA70DE565A824492CEC19858B3A
84BA298BAA0793A4B2BDC804B4378E5FC901BF6AC024AB4543388B56A425DE57
EE873AF6CB35F8D6DDA78B3802ECF103B4F967A0E31AA0FD0435C7826886212F
E0AA52DFD49871D6991E689370748112D6336C4736A565E39D2A2036DD7FEB08
778A1B5F3E6B0125F132EC21AF7BA5CE282559850344987051A0EF1B73A8DC09
A71F205DB3E87D4B062545D8C67AD3889284E79B86490DD53DA5F0E0E54A3932
C1509595736632E571214AE9B8C2DF2BA414AD2DE2F2628F96593E118CBA2999
54D17A8838B3F3C0E127E2A2A6160F9B82D2C8773D595CE6239BA057C38B7898
7234309AB3A67FCF82A628B414048034D1DE0401E6AEC7DD9B0C19A4242A867C
91EFDD542150A4F93BB90A9E11D3E9E5099CDEE7D4EA4B15B31FAAA2B70ECFE0
7EFDF77C8EA39BF3085592558ABB6ADF0E6E5EB54013D2B75D72C1D81F0AD0E6
CB2B6FA247B43D05DA9294947AD4AE5EB8051A60DBD7676D14DD9CFE8E80FF8E
6A8241223C61C9C76AFA0384E0FFA52C649AEE2953539E836DD713EE8D5966CE
7565C9161F2DDD068DEBFFD921B4B931A6A6CE22987EDEC35BCBA0CFAE2C8E62
BA3177653F158D97AB885F22ABF1C4D61E5E0F3E08289E44896B482525F9A838
C4B24742FF79A9A00C323590D105D3EE27FC27FED5E04F1A0486FD9C80A526C4
6EDAF868CB5BA26BFAD13FF6A5ED2AB25A7B2899FC2055DAA66E00951EA5156F
AE573340DF9F66335511B04387ABCACDDE9ACACCAE598D41F6A0961EA844D37A
BFE727BCA89096B3198ACCEAC23EA781BCCF191EE481FCBAE998E477F3BF36C4
645C8D1B89238B5E56BAB4BC745EFC4A6698F3124569D4A216D1AA9A7ADAD099
80685CB15B7AD2BE6782AC79DB85CCF548DCAC709A99FD3096BC1AD508F8C337
43E56AAAFEF54A7D631FE8C9490BDBD517FC78E508E86B1563E5FDE22FD7C0FF
BFDCCAF7FB9DFA1E5D43CBC5FCA64E71C73C36D4635BD445B638DE3E8316A905
C7C1729C61971B5D8F3E5851CBD3960482BD3DC993186667A69948568C844F52
09C78E9BF70F8E2727F585C5AEDD2877FE4786D457127C4758DD43837436E9EE
F8908E8E3112B0DF748423695C75691CB720AD2FC3435172F434F5AF03385F1A
D84FC79DE23EBE42490FBAC85FA27DD8201C114C262AC4BE0941531B033CE147
80655E9B20BF448A66140B1C53474C0F574330C6E4C9EAB8C3AB9245498F825D
A84CA098707143C07A2E24061863ACAA474F5A312594A3CE4471CD06D02BED90
959F961BD30599FAED938AE74DC2A4A552E90DA73F230F7C00EFFA71EBDDE716
7D60008B21EA153F9B55CD3F3500587CCCD2B37D842AFB589491B9822A04B90E
F7A43AB1BA9393D957E655EB65BDA7265AE0F28B69C16A4A18F737DD0AC56FE1
11911856826DFF0EF7E39AD3468B61D541C87EE28B967D53450E6132087C2518
4076EDEBDFBC7C2775C01584DDF04216682BF268D53A04DFC9259C8136C3C42E
7B663E096AF5E77C3F395837668A3950F11EB9FB8F3C984B6D097F3D6E6CCA57
C37911AAB7FE8A584C5B81AF1D465527DFB884813F03BFB1C706792F28DC7C1D
68DEAF16BED7007280C37E773BBA61A7AC50D020F6ED0DAEC8485112A1F35D45
65EFF85B539127FE267051934E36EF5A2F0BDF9EE005FC6CEB4505BDDA5BB2F7
88F184189661E9DDDF109386E552B9F3FD7E2845846F8492F020E67407CFB2BE
B038D2540E0561420B833726309EE76A11E5700161861A1593C4690DE2803803
AC4B5B84EAE982D942CA4E697C1091B6C98B085D7128CDF10DB4C22C17F8FC2F
16CF35AE1AC0AA410B114955D65CABC6FE8EFADCE32081E47362FFCD166F38BB
8AFB23BE30858F1C807E566D1F4CC332A4D59DD118
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR17
%!PS-AdobeFont-1.0: CMR17 003.002
%%Title: CMR17
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR17.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR17 known{/CMR17 findfont dup/UniqueID known{dup
/UniqueID get 5000795 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR17 def
/FontBBox {-33 -250 945 749 }readonly def
/UniqueID 5000795 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR17.) readonly def
/FullName (CMR17) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 52 /four put
dup 56 /eight put
dup 77 /M put
dup 82 /R put
dup 83 /S put
dup 97 /a put
dup 99 /c put
dup 101 /e put
dup 102 /f put
dup 104 /h put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 114 /r put
dup 117 /u put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9D6295729076BD8E
CBC0F4C1BE246922D2482233846A96D867B66D9CF25A1DB661141D36B8506E61
A022F9EF8BC1F2F674EDF1533E67A78CA29A612AA9268E113C5EB84DA56CEDFC
D7A111403E6E2A8682DB04368889747E003A124395ECF0C7FC81218552EE7C6F
60BCFB4120893528670D0E8A4117EA5676915E3591AE5652D003EEF67818A41A
8882E102AEEEBECBD15DCF632ED246A6A58B6A7780DB6F1F9AE3FDAC8344585D
E104F2BA2DF06D68945889A2A3B6C262FB53FC670BC5EB7C56887FBFB7AA7026
84115872CFB0652C6BB330447AFF8F0F665EFD6A41D6DB6877B08052F402448F
CB21C26BDC900636C99CA347B79AA73AFCDE9762A992CA3DDF7279E5C50F453F
52098529850AFB1F501A442D6A02E0A2896F81C8AC735AF1E7EE47208B4CC944
649DF6802EEE813F1456205C6126D7D0B1821AB62DD65468F3A30575E491623E
0054E2E680E4402E1C8C538DA389B81603BE88D6DC287A076F92B224CD58A0AC
44B8D490197341808DEF243660971F444A560C747BC6F52707ED42A99736ECCF
EBCB694A561C3A70A319D204CD40D402FBF937A00BBCBE85DD26C9E3F91B7D10
D85B9D314BC3AAD5A58B107F5F341BE2C53490924142566417D6BE03BB4977FA
6635EA58DEB9508E40B9FFAC75FF44C683680CF242FE210519C9BF92483B0A54
83F48341318BE16D2F8C988FE3DB2E7914581F579D5E323148A31E4ED03BC24B
C990372DF5F3B0C5FA32EB2CA4FA0EA33316569133C87697BAA2292E685C26CC
F8CD40A2366E60B47D47CC9D0FA29D2836011376A07F78BA7664DE96E775CF45
9BC91559A063073A4C2FAAD0893C517C5C46A1425D07EDCC2B57162E3A45103E
FF26A2D2F98B194256A4B052AAFCC08965A50EECD7B9E8F35AFDF7B6568B3983
8030655E7C2BEC961A2F20539D617626E8454E3FE9EBD3EFCEF7F63498441DAE
16CB509BF239FBBE25EFEF07A3E16C9C71EB8D9DCB8403916FB40FD7F4E1A52F
72F2DFF94FD14D7D49FE775390C17C37C1BA0CAF35CF75D682B7833A83224158
D54CE962CFBAFB1B2CA50B60CBEB1F8F58DDB2F5470C355ED9632342D9382AE4
5D33BCA3A0A25EE9E5B39BE5370E7F20684C664EDB48E7973FEDAD9676F9EE8F
701CD4D8CC9B9EBC06E8C86EB88AD56E15CEBB8E1930E8F711CB6E01D5D14967
D7E6C1BDDDE2C4D00384EF4CB02877DECC27AD53FC981338977BA0CC0257CF7D
B42E9BC91AF45D9722461EC3CD9DEAA8011FB855FE14B74BE0A102008EACA2B6
0E287BB4F466FBFDD6E65A5262B9322F95E20DAB875A10A84572D982E6FC7ACA
23C0C37E5EB47B8E69C07507B53CDD98CD1B6445E1699CF35B3DA3E0DC56BB76
F997C40E2ECE47DBDDB707EB527055960113F2DABC87FD9EC7D0AB36B400CE33
0D54D4F197B2830B43DF0AA802DFB2BF747A4C44B31FB708B2C8BBE1955A6A28
379C91AA4CC065A50098AEC0B837E180B76801865A43C74859DF18FE1DA1483B
C17843BF1C7E1B11A8C6D8BB8CDB1D552FE6A1FD0A696A8F7405F2320F8621EA
17C1A32056C45A9ED35D2BD12D02D8B26489CAAEBF4EF33B66FF4BD9B46E4823
6395831A8F3366EEA0D0EA88D612DEBF63DA7FAA24DA979ACC1A52544BCAA007
6C39946BEA6076ACF45722B2B8E4D0823EA2D12B14A98367BB0433A21FBD9F94
18DF298C56F67ABC9DB1868D431A854DBEDF8E1F49E359A545C75A7AA1FA4D5A
50F1EE6B45FC68ABF65FFF257964E4E50D8B0C1FAF498DFC554073697C2F219D
4A68DA9E873B270B9C56F0DDBC9927ADAF9203FD684DE615F68C24ACFFB44690
89C0D5322049FA69E7FD00EFC9C9B2BD177B5B339907F81C31496662847BEC1E
56B5DCDF4FE618970F4268F475B2EF7E0F28CC986DDF098E59DDAD818649CC35
4080C0867A884B8177A6880F06F1E5CC130AB4243EF8DD8032FCF390765BAB1C
1F0C9728EEE261A09F8C1D7ABC7A6B1550551BE2A7D19D45B656650DB00B3A5E
B3E1186043E173BB4DD5EFFB379654F88146382AE3F7196F099BDCD6D245FB6B
AA2FA9B6CFBC9F0CD52798DDF2F13874BDE5B124DFFE0DD93E24C9DAEAE4C3BB
71A9A13AE2860F620B4EC789F95221015D9C510CB4AC775EF69DB9E32E59C896
1AF82C9F0DCDB4812A37761859A3D3BA0CA57F244489C78065346FFA78F5F7C8
0B2E8CBA9EE62FF5C27369D0BCD52857D40F1FB8F8A1441B83565A4150AB1945
0B54D6E49F66389E43096269EF5CDD39526A288C0CB81E324E75D326EC9A182F
2CD966368CE300B41873B08E17C3E6BB51804460D2562AF5A12339966F44CD09
114C6809AF246B5BA6937631842CB9417781A58944B6BA4FCF961465C208957C
81A662D560D0F81BD3CB53C06B6D979F04F6121CCFD5D52702CBF6C70C01EDBF
2040AAB9CB144321E68C4010E0E98CCA2603EB55DD62E881DB621C37EA4108D1
528ECC7A0121B57C6BB1E26F8AE7161ABA7E88256D2D6A8B7CDE2E730D137493
3FF628EF6030DD2330D747FABBA03B44CF600418C245C388F33EC5559E7313BC
4B530C4FC12530D38B27D6408548F25FC084DD0523B27D29D6518D3115AE7755
37162CFD4CF528214466FE525B13782F9C3CD78F3D6C7423E63A134C0A371F15
10F4ECE1D482C647B563D3D15586F80BD9DF7381BD53927825D5AEAF762E1CDC
3BD184F345029A95B3AD4D1B66E79AB4F0809418C0CFD4D503457A190D02F134
3F57FC04FF655AEEB783D6791E4EC300755861837D3D50649F6B7F60766211B3
8148F8E575E28D6C2DE75B15E722ABFC6DAADAE53D89FD295352781DCC2CFF6D
982F6DB778D6FCBF1B7BDCB53F3A23AE6EB499BBFA96E8BE04C3C8E5B660EF24
01EB842DAEBE979F2C2DB72AAB4D21627063B1D3C6CD40944E4CB81655698FBA
A343766CB22E392E5DAE01DB33A00918D6DAA07F2F38B336A3C5DF3708865E75
0DE04D3AFBCA27A249E97377D5785B4E28EE0E93F7D353619C200DB967372ED2
153BF8BE945474266EB2FD30F80042A11B7E3586DE4AB1FBD4A741D36DE583E9
1CA25DA345520AA60634EC819E7EB493CDB128BBADEC3890F055455F060A1100
D5A41D7B180027E08AD6EE7E393DB9F83799544404FE397F557773BE6A130541
157C0EB37E036C94825B5090EF85F8B4E3DB72895D86687758C20EDEBD6D1079
196E9949DC6ED0113571C70B150B37E446E319EC54D44CC0CF6A14760953DF4A
D0E1F33A54D240E236AB63B35BA8E071D77776BE5B9312245F2C6E4FDB4312A0
0D9CF723E7D9A3D8546C4739C00C301A89ABA60A02757AB1A0AC40B24CE6CF12
5850485B11E16646D7150795EABAEB08364A53161111F46A7BC3423A0D3BEB69
BF15726C1F8363914945DEEB29CB8766328318AF3B344FD6D77BBB92BD7FD161
93356493D4D8252AD125708D47C124E44232FB2BF7DD75F87889496DCDB75D03
F58A57D4122CFC194B75A9E9C4789C9A33C0435FB4ADA16AD4A6191928D1663D
05FB8152C0AA176FBA4755205F8A66713404787070757D3721ED6E6D55A59DF0
C92BA8F05EC7BE05D0A2E66DE85E75373483EA3BBEE0F0DFC7E2FA5FBAFAB118
058D095AA71FDFC8AF37E5A98406B64E58BF476C6926725D7EF3C2346CE3F662
1E5A4A18D966479A37070859014719456EA2C7F23E68E1AB2F25ED3A0C00A18C
DD403506923BC983F89CCA125780DC76A411472E38173BC0DD4CDA7B43E13419
B5AB0B9A35E77C58BBA12AA4F5C7EBF8A29996B059E4FAE6809565570442AEE5
D56CBF4407E1CD9A4398B1F3ADFF023F64B230E3D29F526B62D964F5C8DF801F
E94295AD85BD9E1C18E6327977260A871E921C0745CA06A263E335E344686E7D
D6FE3ADB4EE0A7E462F3C00873C3E95D183CCEC71C0E5DC1D2FB310B28FC3611
67C23DE336C374F72368F4973052B48E39969305791C986E6EE35D0350571860
3A8ED849712CF21AEF444BA390644E8646CCA16559BA4642A5800827A0DDC453
7CA0818BC47DF6348A5209A2F0A10CA39840CE6346E89CA0E842BE8692DEF25C
4623A5A0E0B98708B9492E9F564324BB3872D6B953CA59E9F393C477E2AB85EC
C557D333E88C111CF995FB79D9432DC94C2BDB3BFEE13C0D7D1BB920DAFA6158
8548447AFC65CD5515D5021E0ED7D213B0C08C35BB424AA91885CA023D7AF767
B83E619B15DFEF5588D2F0564296E14B5A6ACE03751E1016105C51BE76EA5ADB
4167BAED2A8899031FD7BA05C410ADA25ADD94A787EED1A7AE133B0568B1DBA5
44B41BE013782CFCA3D81E8E8210DD506ADFCE7DC7E792EFEF438221164A7D1B
5E7089F476240C5F94988F081943F24DBF7CC3D1E58CB89E1C0C1624682CC3D8
C95815ECC9183A4B3E353C7F920B7E64086E01672DAA7C8A81319BAA03C1FBB7
8E5E84CC5BAE0E107754794C755B7AF00953504094E1A9DF357D51B578259613
8D26F0BA26AAC459BBEEB90BCC98B865EDD26AA4DF533D6624EDAC762C446B6F
CF9F86DD2D8989D4655775E662B93BF51805EE3CBA0AE2293D95F166E80973CC
82C53042D0249C598B0821E9E7F218BA6114EEC86C158F277934F2651490B723
7F0D0288560DA5BEBAFDDF243048E590871AD18B3B220EC56549004DF122AA03
BAAD6971D790BC644369FDBEE74A324083CFA9496C2A333774F06E35299242BC
F4B26578907CC5AD1893613F2B8622CFBB7B55810162EEBFAAEAB2A6D69CB72B
D7859C73843E665125FF450631F32E64F13A6207F368103C7A7318DBAF2560D0
F1CDD83C3E48CB30C62AF1E0896E1962C655D9ED98E1BB38477C1C60ECDB6B95
067D3A638AD43EE886338F7AD2D2A574CE6FD2E21F6FCB4220EFEC85ABF8272A
82081CE70E4390A74EC717F1DDD168F4A4A080A79EE2ECE0F98A96871DA4B52F
78441601AF47763C2219F5A167604C32F478D498835EF3A6167936994F7C7139
3019FF43C97E7978D3CDA641C1E391FEA572D308E759F28DDE2B40B5BC207A4B
C5EB6A93EEE26782016F8B6534420BE4D790A2E1A65B6CDBE9468152230384FD
14E9AE84418A44F94E6825DD7D77D0BB5486DE26A692B3DA96C81FA4440C5D44
8E7F3CAA9B8DF38F87E09C4D78841F629F78F4E7CC8580CC44E59E5D9AE8B2DE
C0682F793AE7AEC12A8AE688636197E8A08FEB70EFDB6203681A60223B9B0D39
2DA656E5E99B82130D4BE38D7AFE18568DD30B0CC3C73C1E2914ACE11A65334D
A9F18135E7B86157122CD221C33C62012FFB16D2D2F3473A53BE3E7B9FD4303F
66ADF0B07155C7B9B002EA68C6AC7247EB3CE7D2670A60138049DAA964F86A05
22983EDA7242E6BEEB90DF61C937399B2CE1061DF1E551CEED4A80D86C2D4649
C9FF9A1F93E96773CD392478D5B70D5336A03A274E0A6EF44BE8CB2274324142
706BC2E340DC944339D647961FD7BF29944503B4AFCDC69A706AA6B0F6AB2CB5
D220A96ACC1EE5E7826F6F75F044224E5260D581AE761AD0C752A06AA03FD935
FAD65C9EDD4E5505396E331D45DE88F0D1A4303D766ABE0702C17E2A7F53C0EA
96A4DEC5A6B6186F5DBAAB05DD78E38AFE630465BEF0EC66ABA9C1C9232214A9
795D105C33CF069F6BE20B179F4CC9F484AB63ED25C1212C457DF62CA0D56E20
608572216F2D4C09010B03A8AA6D287C8F514BEEDC1C912552CC2489858BF4D3
084882CE4F4B6FB9EE27C0168671E6DA154018ABEAD013C88E1D3EC918371251
63D95BA0FE20212C20AD3F4DB614EE36B488A3F55D94C1EDFCA8E68E54A1EED4
7DD168DCCF07C3DDB5E2B499DB5635C5C5056A7438120DB4839427D07F96AB8E
F842E285243E40259F6DF029E27779CCF3D3BD7206B2C341045A5A4AABACC2A5
91C6830FE05ACDCFDE99046F16F2AC183426ACA4A89FE5F09B7EB2F811BB5FB5
AF073BDA2886070B2327D582DCBA66B47E8948C3BE05E837BE4B81402A583403
74FF9E938F0E9DC3B1CB81B93DFD4070F9EBAED40BA570DE8F9A5C2C0A097311
22A6065139A6580E332473E9410D9F4C734794F79E41D0D437CEC7381919DF6F
A24B170E2BC97A6396A4E3AC3D844AD6E2B8FCE1C6AE97DFC5319F49130C3D6F
AF2541EB2384D5D4CCBEB976846EF8C2165DBF706112BDDDEC9A57D157F5996D
95229FD5C71B885D16B177BAB06B9DF5740A45C2A005778EE879193290419C0A
A4A339029E37E685B8A05B111DDF94AC19B1D85C8E6026E57E3D3B373C08557A
F96E6FE3916695ADFC1F0BF5D558565F42A71C61ACFEFC9026424397F0646642
7EDAA05794BCCD164A645860B57EAD53CB6899B18C6E9496EA4DAB0A0C272639
DEBC4FCBA94B3BF123F7771F602E7667C8F56E12429669F2219C7D8E294BE07B
71E88EA62F5616CAAB7C0198E6FF12A348E36B306FE2684A401399431B6A84CF
B46EE4BAA0F4099E65E9AF3B70274EDD6B6524F4FA38C23F9CD5273EEDC8C6C3
E7312B6E0497C05AD3F3C246638F01387CC11DBCBD287ACF54D8E24759F51415
35ED64132EF4158F54AB9F4D567482B3057880490F805822F71E7E2C52F7BC38
8B1F803AC3731064B90E5E97AA3351D17E73DC2FE526CD6C91158636E395867D
C1150FD3BD12493FFFB813AF0D08C8ED0B7418A2CF90BD5B783364358605D075
5DEA95A9299C0654EFB28E2FE8A41358A0DD124D0314A27558E42ED5F2D74BB7
056DE04D2CF13B9B804A3CBBA29BC155A3F18B8B48283194C33CE8291677E1EF
0721138F8E0409D49BB99F217607586D2DF00C29A25536E21924B4CF6702CF85
C02DFBFD2AA4DE3DBED1D2C02E21052A8D10F96629D0D18154923638FE0C48BD
E2DEAF11663E20717EA77A5453686AAA39D6FF7919AF09B1AD956FDBF734F49E
262F3076F62E77BD45122B55A5913902D9F91C4246FC235BA9C0FA4A96994291
830638949BED423387DA2D455A3C9122484EFF27F5367D1D3DD27D207D973815
965E1CFF36F43C653ED406F65348671D9FFAF55BA3FC266D438AF473181B7801
164EA3F04FEC870743195B3F467DE36B3719BAD9BF15A18637A314C887D46673
445BA3C212749B0A33136FEE9FE2C9A13D62E7ACC96378D257FBE0EB06AD4D4E
D41976AB92AC720DFD33B0677062C32E6F5C992A0324FD26E984B5341A58C190
D20EC3F1144697D514D9157340A6C9F82E62AD8CFDEE59F6FF86C6250CE33D6B
BB82DDB4F65BEFC6F6D0E4044F7BF307CC346E2FFD191846E3CA288C6F91CB71
5FDE855FEC5E38816CC635C470BF15263A10A409F0BC4877F7E6D4C223E3564E
E7BB5B320AAA5AAF4F32528F7413BFB97C70FF5E6843E1FE501472129BC9758D
7531BE576C75840CBC4CD3E6D9E5FF52559B68DE6E7827128BB2ED1BAD43F36E
A0CB68C1A147A7093EB02062AC5492DB7EEE08B1BDB187E15339A66269E459BC
67495937B4317AF66A498923322B087ECF47B601C26E253D223A784DB2D204FD
0668BD403A73723848018B7C86B627B9AE0BD9038F567CD5F670CAFC5C4D86FC
ECA211B713ACF8C1370191161CBB6C2592E8B9DBF3471133F2D9A60F15D72F9C
5E5539D59A6A7E124D9A38A6FF6EB7C71990716F88E1888295584F17D49144B2
B01A190FD830741285B001D05FA4E85693A5DC3207DBCBD7BED7D230C72945A2
D7CBD8E7A0C607F80A4C94CACE846F19B5B15D74CB090F8360C05DBC6BAA5BAA
1CDC394C23B0F46FBA30A15F33344F44E47C17A79B98AAD61952AC0AD2D2B38A
E272F20B3F66F8B1E65BC0C4729108DE73387F7626BFAA1883534E6966E13B41
C5423FA5D180EF73443DDADD4EB11131FD46CC0FC331F19EF284EC27CEC83DBC
23B3E4DE6BD0527FE50100F0354BD1A21C744012A59D5F15114F0E5A02E35F5F
FE35BEEA80EFF52675CDD68BA59CC5F7A751C23EE401F99898B3ACDC27D8375D
C66F81BDA049107AAC2EF8BC75FE1B4F6B65D663B9242BAAA493C3FD82B78173
AF615544B2FEF3B66042D16EDF276B5F3E62A4BAE345775B03733F87EC8AD884
912594F372004B8ADEE6F95ED7A0F348C4FC5384DF995DE7F1CD35F80DE2BD5D
AA55FDEC82C13C4911BD316E1ACFF8BB118DFA3B2DB141412AE651AF9CB304FA
A2927D003EB1B215E38C5B5A2FEBDA8A440EBCE79079489BB163AEE79D623C8F
0D91954CCCF4D3275626964E69541390725352A8C17EF25C2541148D1EE09A7C
4C0496A519BB05E17CB9A52DD4452534ED6E640F4E887E1AC9ECE2481C17C831
B0ED498823FC7F4F9FBB87819E1EB15F07F7825A1ABC04287970AA3CED92A7E5
4DC06F6CB709E6DCA9D70617F681B51CE82D5A1DF1201DE0045D59AC13027901
7AB2480CA5E99C6AEAEEE16435074B67053742A1ECDD1C2612D534A8BFDE57A5
C7E034B212D2D5780AC98D8C1F7B71E0CE75E0116C31325C123AA623061596E3
E95B58FAC2D71893CD0A6ABFEBD47F9BD3ECEE8530BC038E937336D1FD15D7A8
C401CE7952687B2C302614808FBB20A6CBAE229EB9B2A444AFDBED8C563E995B
30B58E87C7DF48BE95180FD246834ABC9D55934FE986AEF4D940A179C94C6D01
59BEF55E1DAB640CF06CF671CE4578B447283BC8250B0F3DAD3A583D61F85F08
6B8D78E72D5923D589D2BD779EA024AE255929381835E3E5FC378FF295AD6369
46160D0BA7321975330CD8A4B4AEAF969E58158A0E5E6B4AE65F710EBF725689
2E2B666D269AB065E9C9C48FB80688A0A65F11DFE2AAFCE6F89047D79247E5AA
314C74FD396A4C80B4F71730CFB971B761ED3CCC071AD555A481DC0FC6CB393C
D2938D5CF8CBB8D06B01092FD380332CF954FAE479A5D1BAB9B9723942602140
616D800C85D8963493093A6A13C43472D616E82E1500F778B762DFEACC24B0C8
1AC1C7390A0C04E9E0CE01EE2DCE989BE1D4013FDE8935AB26928F852C87D1B5
3EA7EBEDD6E36DCBFE13D8E8FA3D085EF9D78AE388250E405C3921CE7E38CE7D
257578927C58915CB94FB682576C025CEE1AF58852B50FD33A9E34AA4ECA14DD
8937990069DF03ECBE6BDF229B72BDE36390208D84E39EF3D39A66363D82A21B
B8DCD46204D2331E80CB2ADC5DCF082A7E0C33A57299D6A2FA256F893FAA08BB
D75AAA2E00DDBD18142DF499C56420F65E00FC7FD0D95002CC216E07AF6919C2
B96D9AF02BCDE01F7FAADBA7BE1E56B20283EDD2193D0369E9589C6C1153133D
C35DAF9400E3CD7F6DA0DD07D8424B2BFB537346604F3203CFAD60E5CD596FC2
CF30571B1DFA92C095E2423089F5DFF5110516F0358297B1C930166687F1E229
75B39D68B33215729DC78686071FF45FF48904D13D2D97F4174B54A0D4BA0178
1AB24C8D2EE928222B30BA0CE2A3A27C62C22F477A3828CC23FC4B902A695E50
24D3D3D461F84ACA7FF6A848C5900BD28B14A320B870A719940C9EB6308D460B
E6C06C899127DF2A2EB339F63489E4A35E1FB051DBB099857BDBF05192FF01B0
90206C6912424FD36FCD7E96841CBE16B6C2AB4742698B0A1E9A2AB6695C941A
2FBC39D500DCC2243B470A7358DA92F2E159119E2A3D7A34C6205E7A41CA7667
D8AC8A1765BFEB129F589DF0244CD985EDF7967E688AE3B06D36E36CE307BF56
592A57BD23E5FD6F7955623E63ACB128FE4A69BF34FA787C5B05E3A3433476BC
EF5142E1C9D72AA22B461ED3BA149E098BADC2F95830109FD398F8C95E5E82BA
19D3950EE2FFFB15DF9A808F842F0690B27A749039773FDAAAAB819B3BA0185F
84AEC2498A26A3CB3F59C1311A1AD631AAE4804F31D61D5EBDFFD4AD13A45782
D9F2D421252BBDF2C0A20A5FF2CBFFE108BEB135DD2C9DD126F8743A439C7672
092926BAA7AE3A7D1F669CCEC2E53F669A95BE98516457EF95D67DC359883063
53A82F7F99BF0AB2ACDFCBC3DD7A4FB30B7BAA3CB65292B8455417241D3A2D3B
B44694E4770FD431094BAA9676EEB9BA408CA2674195C385BDB957A145203764
40062EACF9D84627C2627FB1106AB6A10038F08B2BE493F5E3AEEFBE3DB93988
C9D51C3061997DCB75A141461D0DD905B8F001E4122E3A26B87F17D927AFDB8D
09660E2FB642CEC9E075B0C1DF7183D0DDA1522BBD94C7CCA1F7CB16AEE5C01A
43E8ADAB2F3212499C0D50B01624A3E7311F76F2BB4F7499D5E61B115FD17400
D6300C38B5B8C5F08F00A88C4734840E240A3B2474E3A4886556446A5BA059C5
69F8E18AEBDE51638B560D19686357898E322B5852C054FF714110F78B0D2129
884B22D46E7C3134F50506D29A692B232090C58F0E525FFA732F35B2353A4C86
C3BA8FE8014076809EA433B2FCEC2020EDDCA95B2688F1ABB9B6A05E2884F53E
4A94EC3AED53D76D4C2F7DC791FE1C519333B4A854C5333D98134097D1850A15
1491FD8E03D9F69AB4E26D463B5B0A7B49ABF4F849934BDE7F2BB2943D23665E
03A041B93BB248A94D8D62D46485BAD8699D7593784A0C57712A48F5B9C59823
749AB36D07494973F5249B2FA3DA337ECE7C339C92D3C4D910A64161374B627E
346F1AB6F0210BAD5991868953EF49A3FAABCECEBBACA618495A02ED197894D2
2F5CC1D515C7F5C29BB5DB44A3A1177ADB00CCCE9D3AD46EC2CA2789AEC8783C
0F49BFD4A409F1E1B607F97C3B64826D89AECDA46B810065260B67794B32FCE8
9C8827F4D9DAFC319C53E4B1F295105A277BDD9D78928DF2ADE718A3E5E81ED3
342E0F84849B4C39350F49B84A79942938E7C8AEB489B28719D5BD3D829FD86B
752F37BFB08D05C516D059B509C2484EC0DFBBD7B2FF3D297C55D6B1CDAD01DA
EA46114936569DC5DFA26DE70950C857051E8F3EF410CD6E63CB4AA9DB961C8A
613F8E039595B72E90DCB05FD1BFD44CD45B6FAF9CC50A6166D5DCAEC1FC8C56
4C994F271604DDCFB6540F4890735E39228C42953D0182D75D9A65BB54BA9F0C
E0F469521147B51219CA9FBE519C6F97FAEE723FF4FFE9A16C1082319BDA6276
714065EBA70C89D1E94178B2BE745D91A2D124A3C2D682525A30F0EA35F36435
8EB5558364F6E13616685914A4C5ADEFA958654031ACC4A1B047FA8D8E2EC2BE
15941137B617A9A2A0DD0CFCCE3234D132176F2A7D6A3B500EE50F035EBE27C5
12C0C894FEF4E69F23B40154B439F39D8648B4A8497B24C6610DCEC3B941F1F1
E8C0816DD8DD47773DCC16458B8B6EFA778D373D37DBC2C65B338D69A7A4661E
31929A78E6CCF611B61118852F64ED0E50AB702108175B804156D5900280142A
0C00A565E636763C14BC29C52325D50DE20663F4185770547331BE40DDD99E62
BDDAE10F0BF996EC20AD7CB565C8278209347C36F61C7305CE6437F66DFE8227
4C02C7B51AD49238F368AE21825AA7F3791D2C98477895B94684FF7970038009
FD33D9473B7C061EE9EE9B981D953FA54137AEC3C98E2B2FEBA9C80387BB2130
E1389090D771C5707EFD3387DBACFF4EAD64A5358FAB8F4A0BE082DE7543A7D6
2558F2BE7BF6262571DB328FA483290A558FF7FC5EAD3FE91F021C51E84B9E7D
0213B48B0541D2F936E0AC41D99972B3CD6B434F1F209498906837E0FD1F2B8D
65CC827862C3BFF8017A841D2115B27BD4A486E7A8E3A1A49DFFC9A4593C2B67
52A9F2C252CD6D568AE864F25113480071B9330F397C4DD8D3CA6CEF3193C51F
E8C376D87A2C2F5463BEACF609E8C7175E2652B869DFE68E870816F2A8DAACE1
DF7C34D2B9C1BCB0DDDAA46F8BFE9B7794D4142719918961E98B841909131F00
46649412F352CC3A6A8F72F5049A40C23AF5EFBD72624369446101A5F18CE1F6
B74541AC28AD894472E7527CCBF915D6779CE920F3761B9CAAC3556C9B53D11C
D31F8EA3D48C4FFE0789CDE29118CB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
%%BeginFont: CMR12
%!PS-AdobeFont-1.0: CMR12 003.002
%%Title: CMR12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup
/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR12 def
/FontBBox {-34 -251 988 750 }readonly def
/UniqueID 5000794 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR12.) readonly def
/FullName (CMR12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 49 /one put
dup 50 /two put
dup 57 /nine put
dup 67 /C put
dup 71 /G put
dup 73 /I put
dup 74 /J put
dup 75 /K put
dup 77 /M put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 121 /y put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651
F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224
FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B
8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0
B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A
966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E
CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4
2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E
56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295
EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277
E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973
5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F
847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000
72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6
3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2
57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB
B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7
547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88
F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535
47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444
24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7
64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204
49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7
FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD
F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A
DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97
CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1
7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5
459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918
1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1
6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846
67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5
71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED
C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345
2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E
3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF
CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801
F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8
16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542
29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327
0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02
A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E
DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346
39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254
28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56
FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9
D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8
116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F
59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74
482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45
4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A
323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17
C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB
5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179
46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1
E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C
C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3
4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C
BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32
5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735
9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117
52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B
E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2
655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC
F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42
FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442
87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107
5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6
6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366
B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03
3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A
A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34
343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046
BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D
775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5
8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0
7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5
E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584
397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65
7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689
37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257
2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E
37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817
DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F
89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08
90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1
EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7
FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C
5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B
8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665
54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6
4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8
86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B
08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E
D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B
B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54
6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC
3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1
DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C
A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98
DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E
748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A
C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879
0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA
1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D
6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422
E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6
F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76
FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016
E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D
903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B
6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21
2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66
139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4
0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9
E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1
2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6
585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8
D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E
51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E
B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3
A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E
512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5
F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D
E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5
1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB
F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407
1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF
BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55
BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578
43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E
AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A
2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51
D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65
8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991
9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8
BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925
969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A
3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A
845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31
E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D
6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407
E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93
3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733
52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6
F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F
95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149
AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8
39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4
8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3
957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07
55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F
53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C
D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106
CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E
CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46
BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1
B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5
218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521
3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86
31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9
7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195
196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9
1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341
ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563
82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651
E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D
F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A
BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753
A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA
34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86
F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC
AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968
DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21
073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8
EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E
8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502
818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CAF3C4
3CEC6D934FF98D62D4BAA24109EDFB293663642DD966E8BDE3644BC9E155CC43
3014C67190B375C6901942FAC5EF3A8F10A9D69CFCD0E8A6224BFAEA7E3E4A48
DCB71B1A678745775FC4A67A234E9856D35499AE6803B0DF1E3AAF5C41EBE33B
701238565729E5B999EF3CB9B33A80BB0E71F4A5C594029BF1B2E91C6BA7AE00
FE8CD4F34111CCE97061B002A21A7EF5D094EC3A31D4CBF85A7B98B58997C2A4
3D3FB12C6B1AECBADDE715087B8D72626C7592B4F0FF67575D1582D98A7437C3
7938F169244EC40CBC6DCD5DF16C89C0E1C61CAB7E75B0ED695D5818BEEFD514
55661ED03485F7A961BC5279164DC57C69A63F19E227ADA69F4D5D82AD18330B
885972F8590A00B4B521ABDC7826E989483A472EF5BACE5D199F89874F53F11F
8E4D1B0EDBC80C677AE1DC55A51E47268CC2D37F694CF19EF921839D73A97F8E
B3044A6D16BED6CB6A0B46FE55CD370BDB67717FA118DA2FA278F729E74B6FDD
76A40B882E6883C1AAC07E7A044617660EB7E7F02C11C1B5932B506DD1DF3AAE
65355E074CC1B5AB0B12C5846FF1A770B057ED8476C47E9FCCAB0D42AAC28420
031C4E04BE3E8ABA197D7EF5D44FF517EBFC429BE7DBA8AE69B0590009F3DD30
02AA812EDD68F8558D4C80C17453ACC8133DDCB7E80D7F895086DE3156EB8367
CA86751BD15EE5C4B60C128ECCE03ED5C22B1BA99E06B88F3C3C4DB59A141EC1
137600E21999E410A8C069B91145ACC7A01B60B4ED3E6AF37EBB5F6E916C1FC1
2FD0983C3BF578CD139A64193ED8D597A929F1EB7180912F5DE8623B17A4CD71
191F83F65127549C3AE33A131F2BA1F66B87E2BAEDF57B2967AD6AD92BAA80C4
7132FFE8C48BE65559B85645DBF49E8302D9870FF2B10043AD2B99C171E94D74
371EA600339ED9EF6DF877F867BFC4AEAE72AAE926640E2957AA4375F44B9414
824D3E644ED1B4DBF2DF49C3CE851229E560A86CBD5BA5E0DC6EAF4297B083BB
8879917F0208EB153AB2C68D7AEE50F2147E9EBCB39AEC6ABE7DEB70A31A81E1
D9596D8115A165E2BBF8BC1AFC112513730B65C22D66A44D3AB3F3847AE3761C
1F76B3B0EC7CB6C1CF9D003F08023A3E73DC1424A2F1101D83A1A1F8E9626BB4
3766104395FFCAF560112B83DDD09353F59ECA7A47D21202996E41911124ACFE
80266A4B7132FC60E80150A6B400B036A3766D6E5622AA176E5CFB2B8B77F587
DC87BF2F170DEE817F9094BA73727B6BAD86FAB4A90BFE64F23ED281C73F1D83
9E1C8708CF1783C386AC23585701C3C1CE093CFB31BAB102B9C153E007739DE0
A486F9C4E3720E835B7006ECC3500659B67DD7EE2D7407F663AE95078D2248BA
1AA558AA888E63FC0CD70AF41B258BCA4DD704D5EF5A2A0F245590C7F1E12244
D80580160CC15298BC5ACCF2F6167B9797F6FFF7D37076862BD1CBAD5E450F6E
D775FB30BFA71C35B2222BB21D8C0AC39CA0218CE282A0C6BD701B20BBF1EA7F
DCFC9BEE993270D31BAFAE62160C191D76693FBCD7C2FC7092C24BED43B05406
AD802E6FBC02C7849AAD03B9A39351233FDDD7F34B5A87043615C55F704AE67B
AC63924165B62E3C4E5C768FFCA3DF07639150CED1EA5D43F9FD9158E76BA247
5EE2C32C32A0E450851F7760D11C69AFF0F99870023B72A7A3CAD56A24662B04
0C4868E55F995FE12954BE8B55642EEE4D691056145FF75FAD3D3EF2A5DCD703
4CF9310D575C438B2DFD6ED7E3B486221A1B54E02F2DE38A98CB282BB3CC45AD
0B44BD908B08D297F62272576031FA8566E3DD8328731F2DB5C4D5D9DD650077
7CA88768EA20B1D7C9B929BB7084BD5D76E805E5B048CA95616F5D6288121CFE
29CCAC15064374FEBB9120261A51F2CBDC7C274B0680A145B035DFF9F6EB67C6
8318FD2EBCA49C7C8B3A018F29E948F098BA00A8421C6A54CC8CAA9C2CFF62DA
E0FDFE48E4FF5B056551733B1511EA242A48AA129DF661FF3E3419FDA3AC7AAF
8875C116B2DC511D8C4576B1D94FAB55A1689BADD4D58DEC23241F4481358839
7EACCD4CECF5A75A6CCC369DF85DDDF58950BC8D0C5A275E33DD926C62DA1A81
FDCE23B027A956648989DB25BCEF19ADDC30CE870DA4B58BBFC8896956347B51
93EF417AC060625AF76D563304DC2E879F732D6FB5F6F12D121113390F18CA1C
835F5021D403ECBD7586AED0DE231B56385CDE745C84EFF53C1FEC785ED51109
BFDAF4A6A1A1071A1978B07F37717DA5D5AC031B196580EAD18EF56E82633C51
80B4FC0430F28D35CE1C7DAD0108F1DA9656D5F46FDDFF16DAA1740A6EC28C7E
2534115F67183D198468AC2F9062445B64696252D6A91A2551F752323613A116
9076FB393E95BDCEED356060487B39A2ED8CC1976A862071839941AD0B81BFA5
ED6CD26AE8CEE5AD5093125EA8A9DFC4F98CAD30F4451B87ED526F178594F5E4
854080163786CD33A93D968044F30A6570A4AE6EE8266481FD3C530279CEBC37
E16FD3A3BE829BF588EB46DD345623607E4D7A6BB86C8104FEDD5A9EDC736959
B21241742FCC6F434D3202BA666DB67C8AD0852EB423128650A740F67BE2DD8D
BBCC3C7C4ACB1F39B8448780BE44E1EAE621A996F0D91773E578C9C5A32DF78C
D574B3348C7DB1B31912F266B45111ACA49B2F0BA7F05FFD9614C23E963DAA71
1DBD79EAA868C239235CB2333E3FAC8B64F0194CAAEB4DB44E026FB7AF70785A
D9B32C40FA1C71D25FB8F5C0A58FCC31926864F13DACCEF4A2D254F023FB80AF
91E51F9D99F8888E985FCA6895A4225972AD538530744033C35D3BC7AECDD712
652866477E5DC84F7A965D8761DDCAB1CB05A50AB1ABD8705FCEE806832B64E6
D62C79A8147035CA3B22FBA258CA830B1D53C2175DBF7024832831E92F589ABA
6611C8E9A56AA01F8DD63468E3738F2FDD0FBE34848FEA0015CCE2D31D063D99
82AF15549D02E6E8CA851DDF41DF3968FE3AF55F84DCD263BA666F3193240C03
E2485660A84B1195181FC15AC2572D9634828AAC981F2E068D790B79107D48BF
72264A28D92B78F94578CB7B6771647160AB3DD6AFD36228738D31B134E8CB3D
1C8FB5FA07854A5FDF8D9CB6951944689C2DBF3DCAC0D4828BD6BBA5B1BBE50A
D3D689D570A7DA4524C57DBC1241FEE68279AD4F0EF4DCEAB8810AD223A10BA0
1CC8E30FF95EFD5F0C73CFC5B1A4FC099A4600108FF5E2D116EC4C94BDC0AE05
12B1348B5434820D7A63269A0A1824B829CDD3F626C1265816ECB8C39C8B5948
7B0A723DAC1AA09950A8588C0D3891425C76DC8EEE2C7D7565683240AFB7E018
1DCAB90B9EE6A2C9F6C55B1298AFE42244C414DE44844C6460443ED60E431778
A34215E408E309F96A94D61D1D3A769EF14D9E65F4FE8C47DC262D12364389C3
0E07C9E2FC212BA2FE0D5206B466F386057F7C245075D179B811E6CFB41B8D56
071F1E5BF1E69C19B3B62F0EAFC0BAF00A1422E72A76924FFE66F916344719F0
13DB049C26A54A93A6C8A2C3201D796928B151EC1A1B66A199CA3F5974C23027
A2D1FBD060478153D7881075BDC3E58EE4FADE8EBC8EC21233F854445ABEC461
27AE48BE4F56581797350BE003563E509767D5DD00A98835CB16CE84D65C3BE0
21B5642DEDDD32047D9B2FF0D7EA320814F4E4F43C2633C3479360448529E7D8
981BD03701F7045EC790DE8F45FC03CC31092DB06DAE0CC848831E68581B4BCF
6A5C4AFD1590E14E5C0B330A8468E36C3C176E7219811250438124F35DAE5E20
DDB1F813874545A52C638C270841A4C875E4BC9B7139AFEC0AE34951E2D8B7CB
1B0FFB9BF2841F9CDB5761E7EA15A32A7C244D714ED7EFF23281099BEF455E9D
05B8C97E14336C349005CCB4F84B05AB293E3B923004493BE02D94D49767162D
4D48934C825AFEEF887C89B712CBCDC8F61B3426F26DBAE2550DD4AC0543F57E
DD20E93FDE08233E514434554F72BC55C0053BA07AFA2F4E5A58FA4158D6C0DF
A318696922C0F57493EEB4FB2B35876BFEEFFF203AF25AC453E1A3C2EF50713C
339A12F7980F795792A20F5F41944388C3C824CF015CA37C89FBE676F93EC6D5
C16B5E548F3833D3D6359FCB9715948DB2E507AC2BD2E5BA6E9CF8FBEEE9BFB0
A7CDCED12942D955F913CE0A1D3AC6FAE829783DC967A16A6590C7FF887ED7B4
0DCF0662D87959880BE0B6BF7DD961FE474A58FFF254D6717B1E8FB7CA1AC064
A5923DCE3EEFCB9FADF108035782ECC0A3D97740F9216F44ECB3EC9C204DEC30
E595EAAE7EC2149AB8FA573F8EBA2D4393E3DF2EB164B5F6E17D46DEC8E543ED
DDC44924A6848297D6E21C814C133C58D716D29E8F757A70BEAC38BB77A03E69
637E42F94189936DD7699E8059A57BD39558E19EE82BEA91DC9F138CBB24680D
C02AC86B9858BE61C6BE8B94F7C3D4DB41EB4ED5D1BBCC8D64423DA30D4CD1C5
E6C1312E55A1C0E6ED4D0B2E0320056CD27DC24F3F449E119D3DFEB537245153
4F4EEB33FFFC836174B95CFCE312865B20C7D91134B095A7B954BC3E1E8B1338
EBD641DFAF320562E363CEE3E41CF82E25A559CA2C2E0FB1AE10093E6CC5C900
BB9FF401DEF7AD96224A1D925FAB4EF7368F6E6E7DBA85E8286476A0BDE2AAA9
1FFE0823FCD3118DEED38494C802C5690317166E90B74557D77D2DD33651A22C
0C21A847D98C97028EE6BEA5E2856C237142BF8916EED5A1266F473B23AACDEF
2F9E021C724E40E06A89AA4CEDC2338A38119AE9933F247EEA148BD2685E8E38
1312CE1ECA7A5F1639E70FECD4FD85E901D4E2D59856C6321D47A5ED606C12C9
74A4945BEFBD1FACBA141C3A5391AF6AE74A8D77E31AEA26668E4616EF4EFA52
64AD9A8BAA9E12D574C7FDBA899217EE318FEB558418642C7C38CFF392D0ED1E
6CE680127D85090BC9D80B1061AC5865F0588F06348F5000DBDA237F1BB3D8F2
12493644C5308D26F8D725841E02961ACD051C898E3B180257506410C9BE8F5C
9F1104F9B89AA22EE66691A637E5631A537951499B8D2BC08E2D3D2BA1BD159E
9E373C0EAC727CF22FEE5F5B53E68F25E5FA1E8FE0EE6A8E8141EAA1EDAB7E61
B285B95D7B01C475990B93825F2FDA45979947273192C501F447BA3A2B5D39FA
A3BDE3DF1C61D0E7FDCFCF45679F7F08D46944D3FC85B9C3414A71F62DF739ED
F5A36633E1675B00EAFE651607F5175B33195CEA54CADD1B6F5DC01C69521C5A
9FAB663A26DC44B88EFEC744699C7D9225EAC376745E01D3804B0CB7F0D4D325
D8F2CF7DC60C71D8EAB99CF430FBC6C192FC64EDE9E12E56EE28A37DEC3B615E
F410A2BD890F468B5F4C547F80901EB3D5FABD8D1B5D9C344AF050BF6224A7E8
102061A0B70AE519F62F8004DB52221E3A6206EA42A2A6249B77A30A711C519F
099C1A08326A93F16CCA61F1EBE8D5D642C214C03B5ABDE6CF4B6BD097AC1EB4
F3DE4842CBFDEC015508E8C0B6AE4E555A0247CA18E49D839B180FD19172AB61
D848D8D056F98D8C46535CB2D222CEAE4400AF3154A8EA9707A7C2E493897D45
B6D1AE0E8F77D84CE2396DACE0FCC79D745BBA8646B82D05380351553265317C
A84749B6B89A41340430514F2DE65A3D222AE61DB886B9130DF17A76D4F74FA7
F31E0472565EB6CB76330DB6E813C010B3037FE312A5EEDC40107DD4F0583A90
0FB32FD529189508FF5BCBFBAF450785068794FFB1801DD95864B1FE9013DADF
F14D9E1ABB37A158980021B3E7A5E782F59625041173253CC8D34CF8D8676256
2DEDE39C86DF2C900A8AE01F3A49EE255C2B39728438ABAF75632598263E32AD
BE2BB894EA141BB6B4EE8D7678F96883AB61B887C9CBBA9A48B05D31AF0CE8A9
67062A91DD224D207C02B33C496987D02CD9D912247A476E95D016C52AFEE07D
2020D16BF18750FACFFE3F2055EF0901FC4636B631396E7D00362C1F9755A956
92BF4EB876451664B81783C805157DAD63B170EEBB5B16E2369E44AC9ECDFFB7
66BE6ED01F0A319B7BD168E93BA5BB798720C9580473790F436BA5EE2247467B
7A05CC8C691E4730867AEDEB0D9044505821C640D9EE712805656CE893E63DA1
E44E4C7C44B791510EFDF055E3570833EB91FF1AD86212BB04F369FC692D370F
42B3937845CB6A7453D128617E8FEA7155059F6ABDC6FB0DB1454A22E2D0D662
B8343E065C40E752DED7282F5B9F8F780FB5B0CE57927AF6D6CB33B223BC3C84
D129D70D097493662581D43DF50C9905535EDD5CD608BEDBED9A11EC935DB8DA
142E176528B766058CE2E8E0E7926704FFBC36B9A4A8A09F50E7CDD61D5D5984
5B6232173A463190CD23829DC216062F4A43E8DC18241FA5F4446826279607B4
04540E3B138299535D33191E6223597216EF062D4F8A7D70CAC3342919D9CDD4
5C3FD60BB2FB2BA4709E5AB230F75A2C817F3F170CAC1ED73ED3C7C9B642586E
17C8BF642507015543D3434A9133A0299BDDBB6B736241671D1571ABC24F4299
3EF2B36C9B346B5BD1E68BB2307D0FD030758906DFB3B8291E4DF4173BA106FF
E963DA953C00BE467D7C8B95C16BC0ACB213B3AB2F0D32AB63BC3298590547DC
4A8C4D5C47DB6426581A3581B965D4EBFB69C1F3C3B813138A09F765418524FF
E34ABC742FBB5F3FA4BB02F36157EDF0E5D4F74F5ABB8821D8DBA71C604DAA2B
0DF7B29D0203D973AD760247D0F60660066F0884A9CA957A07B483151BD3BD3F
C366CE26AD7A26E2DE174A3574407F5C433D4E18A02ABA94D5487E196149602E
F87BCBB4B0EAE9A5451C09C0EC60BEF68ECBDF113437A409FBC0EBC23A36F5F1
6FBFC45E80B06F55CC585AC15532140D2E128D684452013293D32A9CED5D6BF8
F0EDFF47B3FE43CA990C2A91DA3266D5D36CCF6AEDA2EEAEE70E1E4D77C81252
D5CF057915E0B060A5C2ABFA6A5414E52D0887AECEEB3A82341111464EDFEDC9
57E9160357FBDC7503F4E065E90CCD6F1343EBE19CED50C616B9EE2472CFCA3D
71D801CEF0EF0A766295F14BB6260D09401F806FC92E4D81CB77230DC46E738F
7E5B6FBD24121F4EF7234D9B7BEC6FC1DB56A2DC706CA96AC032EA2FD1EFE81C
2C984E24084D60B9ACBC04D6C293FED8C8A13C3B83CE45084A0DAC81B1AF4289
B2833DA8E115244A85436A49C816D13902F5ABBBF2D1057CB36E3ECD39B5B2B8
3436A941226A8825E09ABF69F268EC48757A0A1149F8BA22EF8759D6728F0F7A
5B47E81DFA4C2F85F36BB9F3EEA521E0A1F0AB7153E322663B82E2544A6F4B6E
B8CD5AF4A4F4742E36C0F7C6D6D0F0E21C3067BEDAF2E5216A25A8805616EF9D
108A07438E822143F9A0491038AB4B5AF376F930B2B4BBCEF67587BF72C77364
BD4A28E6BE3484071395D760F6A869BA7550C3AB8C99AD0BB33036D38D3CD4C3
86DB3118609A243FB51BCC0AA3AE5D0F47D65805511B4186E50FF1A003DF095E
5A1B20DDA8F7176FDEB681E590C64D0376C9507C2D07F6D27DFB78BD1E032E7E
B9254043A5F2594CC3723B03EB4E1C214CE1AF1687695BDC0622FB4520A19501
A4E6D61513A93E5F02E55EF518F4E1A62222900249D75BE22745445910C319B5
F67EB17B8112476E68553E8D98B74BFED7250B82A325F6E9B0B62EE9A673EB96
2F92886172C715C04E4118388AA47344B7BC4C79BEE25DEAEA394C7394B87F1E
175E236749A9DF9956F78E8F619A6D4BE8CF42644A1D6C3162989C179D872A32
DBF88D84953ABCB2E1CA879BD0FB81D205BFA2B6902A1001DE749008183287CA
DD208EBF4F31D467896BBDC8735AA1EE0BFDB7BC9C2306D3FCD9B7F70B4FE187
AD482E3E4F1E98F5DC0F922669D48DA7F9281433C980FCDBEDF4C826BF7C6E51
5D7E0F2E3D0E4E3E15E5CF2FF0B73B59AFE52D44E4EE73BC558B6E1CAD5F9D26
40D01983F077EF30145D052D91AB7A517920D849EAAD7309AF1D6C0F11ECF2FC
0A3428754A4D68676E4ABBE4977F8F9041378B94B8197D4DA47AE8F9256BA2BA
4E1E02D628FDD579A461F42FD0AA706D4B89EE6989BF384CFFDFC6FB513956B8
167B5CCFC6A35672160938DB98C8159614AA887BA07281C02BBBCE5519CF837A
377D6E0C0449D9883D9081F4679DFE3870938144F01828A18AC8B2CD3D8C9E77
ADA7A71BB0D14B79A97B36F230D5ECD5ED8B2A830A8FC9CB79FDD656BE8848AE
6531D7D0AB4822E1B7A047FA0B4382BBDDA9AC9842A651A148C3DB67E4AE94AB
59EE81C8463F853B273DBEA8258F921E9909C578419AF3D5F8BB9EDFCF0AC824
99D8364EDC0A7122852A65AFCCD47145588F44A78D93B0A1734DCB1DA309E38D
8CB7C69BC06E10
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont 
TeXDict begin 39158280 55380996 1000 600 600 (manual.dvi)
@start /Fa 145[41 4[23 105[{}2 58.1154 /CMMI7 rf /Fb
135[51 2[51 51 1[51 12[51 51 51 1[51 14[51 8[51 3[51
69[{}11 99.6264 /CMTT12 rf /Fc 134[41 47 1[40 3[37 3[50
4[29 2[41 2[36 19[63 67 10[59 4[65 1[65 23 23 42[34 15[{}16
83.022 /CMMI10 rf /Fd 207[19 44[34 3[{}2 58.1154 /CMSY7
rf /Fe 133[50 59 59 81 59 62 44 44 46 59 62 56 62 93
31 59 34 31 62 56 34 51 62 50 62 54 8[85 116 2[78 62
84 1[77 84 1[106 67 88 1[42 88 88 70 74 86 81 80 85 7[56
56 56 56 56 56 56 56 56 56 1[31 37 32[62 65 11[{}59 99.6264
/CMBX12 rf /Ff 134[37 1[51 1[39 27 28 28 1[39 35 39 1[20
2[20 39 35 22 31 2[39 35 11[53 6[53 6[55 4[50 7[20 10[35
20 46[{}24 66.4176 /CMR8 rf /Fg 206[30 49[{}1 49.8132
/CMR6 rf /Fh 220[62 35[{}1 119.552 /CMTT12 rf /Fi 133[41
4[52 32 40 42 1[49 1[54 78 3[30 49 44 1[44 3[49 50[30
46[{}14 83.022 /CMBXTI10 rf /Fj 133[60 71 71 97 71 75
52 53 55 71 75 67 75 112 37 71 1[37 75 67 41 61 75 60
75 65 9[139 1[103 94 75 100 101 92 101 1[128 81 2[50
105 106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67
67 67 67 37 45 32[75 12[{}58 119.552 /CMBX12 rf /Fk 198[33
2[33 33 33 1[33 33 33 48[{}7 58.1154 /CMR7 rf /Fl 139[75
1[79 1[108 7[108 2[88 3[94 29[140 9[97 97 97 97 97 97
97 97 97 49[{}16 172.188 /CMBX12 rf /Fm 131[95 48 1[50
50 69 50 53 37 38 39 50 53 48 53 80 27 50 1[27 53 48
29 44 53 42 53 46 8[72 99 72 73 66 53 72 1[65 72 75 91
57 1[49 36 3[63 73 69 68 72 6[27 48 48 48 48 48 48 48
48 48 48 1[27 32 27 4[27 26[53 56 11[{}62 83.022 /CMBX10
rf /Fn 149[23 32 32 42 42 10[55 49[83 7[83 12[65 4[42
1[83 9[42 2[65{}13 83.022 /CMSY10 rf /Fo 129[44 44 44
44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
44 33[{}94 83.022 /CMTT10 rf /Fp 134[123 123 168 1[129
90 92 95 1[129 116 129 194 65 123 1[65 129 116 1[106
129 103 129 113 8[175 2[179 162 129 2[159 175 1[220 140
2[87 5[168 165 175 8[116 3[116 12[65 39[{}36 206.559
/CMBX12 rf /Fq 133[34 40 39 55 38 45 28 34 35 38 42 42
47 68 21 38 25 25 42 38 25 38 42 38 38 42 3[25 1[25 4[62
62 59 47 61 1[56 64 62 74 52 64 1[32 62 64 54 56 63 59
1[62 1[42 6[42 42 2[42 1[42 42 42 42 25 30 25 64 1[34
34 25 3[68 21[49 47 51 11[{}66 83.022 /CMTI10 rf /Fr
131[83 42 37 44 44 60 44 46 32 33 33 44 46 42 46 69 23
44 25 23 46 42 25 37 46 37 46 42 23 2[23 42 23 1[62 62
85 62 62 60 46 61 65 57 65 62 76 52 65 43 30 62 65 54
57 63 60 59 62 65 39 1[65 1[23 23 42 42 42 42 42 42 42
42 42 42 42 23 28 23 65 42 32 32 23 3[69 42 19[69 46
46 48 11[{}87 83.022 /CMR10 rf /Fs 138[73 2[51 3[73 111
36 3[73 1[40 58 1[58 1[66 13[73 98 4[122 20[66 3[66 52[{}15
143.462 /CMR17 rf /Ft 134[51 3[54 38 38 38 1[54 49 54
81 27 51 1[27 54 1[30 43 54 43 54 49 12[70 54 72 4[89
1[76 50 35 1[77 3[70 9[49 6[49 49 2[27 46[{}32 99.6264
/CMR12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%BeginPaperSize: a4
/setpagedevice where
{ pop << /PageSize [595 842] >> setpagedevice }
{ /a4 where { pop a4 } if }
ifelse
%%EndPaperSize
 end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 0 TeXcolorgray Black Black Black
Black Black 1388 2076 a Ft(The)34 b(Incomplete)885 2258
y Fs(Sc)l(heme)45 b(48)e(Reference)h(Man)l(ual)1390 2441
y Ft(for)33 b(release)g(1.9.2)565 2806 y(Ric)m(hard)g(Kelsey)237
b(Jonathan)32 b(Rees)237 b(Mik)m(e)34 b(Sp)s(erb)s(er)491
2922 y(Marcus)g(Crestani)224 b(Rob)s(ert)32 b(Ransom)224
b(Ro)s(deric)32 b(Morris)886 3039 y(Marcel)i(T)-8 b(urino)290
b(Martin)33 b(Gasbic)m(hler)p Black Black eop end
%%Page: 2 2
TeXDict begin 2 1 bop 0 TeXcolorgray Black Black Black
Black Black 946 523 a Fr(A)23 b(line)f(ma)n(y)f(tak)n(e)g(us)h(hours,)g
(y)n(et)g(if)g(it)h(do)r(es)e(not)h(seem)g(a)f(momen)n(t's)h(though)n
(t)946 623 y(All)29 b(our)d(stitc)n(hing)i(and)f(unstitc)n(hing)h(has)f
(b)r(een)h(as)f(nough)n(t.)p Black Black 2510 805 a(Y)-7
b(eats)2510 905 y Fq(A)l(dam's)30 b(Curse)p Black 2148
5255 a Fr(ii)p Black eop end
%%Page: 3 3
TeXDict begin 3 2 bop 0 TeXcolorgray Black Black Black
291 1187 a Fp(Ac)-6 b(kno)g(wledgemen)g(ts)291 1619 y
Fr(Thanks)20 b(to)i(Sc)n(heme)f(48's)f(users)h(for)g(their)g
(suggestions,)g(bug)h(rep)r(orts,)f(and)h(forb)r(earance.)291
1719 y(Thanks)27 b(also)f(to)i(Deb)r(orah)f(T)-7 b(atar)26
b(for)h(pro)n(viding)f(the)i(Y)-7 b(eats)28 b(quotation.)p
Black Black 291 1901 a Fo(Copyright)746 1898 y(c)726
1901 y Fn(\015)44 b Fo(1986-2001)c(Richard)h(Kelsey)g(and)h(Jonathan)e
(Rees.)291 2001 y(Copyright)746 1998 y(c)726 2001 y Fn(\015)k
Fo(1993-2001)c(Richard)h(Kelsey.)291 2100 y(All)h(rights)f(reserved.)
291 2300 y(Redistribution)c(and)43 b(use)f(in)h(source)e(and)h(binary)f
(forms,)g(with)h(or)h(without)291 2399 y(modification,)38
b(are)k(permitted)e(provided)g(that)i(the)h(following)c(conditions)291
2499 y(are)j(met:)291 2599 y(1.)g(Redistributions)c(of)k(source)g(code)
g(must)f(retain)h(the)g(above)f(copyright)421 2698 y(notices,)g(this)h
(list)f(of)i(conditions)d(and)i(the)g(following)e(disclaimer.)291
2798 y(2.)i(Redistributions)c(in)k(binary)g(form)g(must)f(reproduce)f
(the)j(above)e(copyright)421 2897 y(notices,)g(this)h(list)f(of)i
(conditions)d(and)i(the)g(following)e(disclaimer)g(in)i(the)421
2997 y(documentation)d(and/or)i(other)g(materials)f(provided)g(with)i
(the)h(distribution.)291 3097 y(3.)f(The)h(name)f(of)g(the)h(authors)d
(may)j(not)f(be)h(used)f(to)h(endorse)d(or)j(promote)e(products)421
3196 y(derived)g(from)h(this)g(software)e(without)h(specific)f(prior)i
(written)e(permission.)291 3396 y(THIS)i(SOFTWARE)e(IS)j(PROVIDED)d(BY)
j(THE)f(AUTHORS)f(``AS)h(IS'')f(AND)i(ANY)f(EXPRESS)f(OR)291
3495 y(IMPLIED)f(WARRANTIES,)f(INCLUDING,)h(BUT)i(NOT)g(LIMITED)f(TO,)h
(THE)h(IMPLIED)e(WARRANTIES)291 3595 y(OF)h(MERCHANTABILITY)c(AND)k
(FITNESS)f(FOR)h(A)h(PARTICULAR)d(PURPOSE)g(ARE)j(DISCLAIMED.)291
3694 y(IN)f(NO)h(EVENT)f(SHALL)f(THE)h(AUTHORS)f(BE)i(LIABLE)e(FOR)h
(ANY)h(DIRECT,)d(INDIRECT,)291 3794 y(INCIDENTAL,)f(SPECIAL,)h
(EXEMPLARY,)f(OR)k(CONSEQUENTIAL)38 b(DAMAGES)j(\(INCLUDING,)e(BUT)291
3894 y(NOT)j(LIMITED)f(TO,)h(PROCUREMENT)d(OF)k(SUBSTITUTE)c(GOODS)j
(OR)g(SERVICES;)e(LOSS)i(OF)h(USE,)291 3993 y(DATA,)e(OR)i(PROFITS;)d
(OR)j(BUSINESS)d(INTERRUPTION\))e(HOWEVER)j(CAUSED)g(AND)i(ON)f(ANY)291
4093 y(THEORY)f(OF)h(LIABILITY,)e(WHETHER)h(IN)h(CONTRACT,)e(STRICT)h
(LIABILITY,)f(OR)j(TORT)291 4193 y(\(INCLUDING)c(NEGLIGENCE)g(OR)k
(OTHERWISE\))d(ARISING)g(IN)j(ANY)f(WAY)h(OUT)f(OF)h(THE)f(USE)h(OF)291
4292 y(THIS)f(SOFTWARE,)d(EVEN)j(IF)h(ADVISED)e(OF)i(THE)f(POSSIBILITY)
d(OF)k(SUCH)f(DAMAGE.)p Black 1688 5255 a Fr(iii)p Black
eop end
%%Page: 4 4
TeXDict begin 4 3 bop 0 TeXcolorgray Black Black Black
739 1189 a Fp(Con)-6 b(ten)g(ts)p 0 0 1 TeXcolorrgb 739
1707 a Fm(1)76 b(In)m(tro)s(duction)p Black 2166 w(1)p
0 0 1 TeXcolorrgb 739 1893 a(2)g(User's)32 b(guide)p
Black 2176 w(2)p 0 0 1 TeXcolorrgb 863 1994 a Fr(2.1)84
b(Command)28 b(line)f(argumen)n(ts)p Black 61 w(.)42
b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)p Black 132 w(2)p Black 0 0 1 TeXcolorrgb
863 2096 a(2.2)84 b(Command)28 b(pro)r(cessor)p Black
63 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 132 w(3)p
Black 0 0 1 TeXcolorrgb 863 2197 a(2.3)84 b(Editing)p
Black 82 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
p Black 132 w(3)p Black 0 0 1 TeXcolorrgb 863 2299 a(2.4)84
b(P)n(erformance)p Black 25 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)p Black 132 w(4)p Black 0 0 1 TeXcolorrgb
863 2400 a(2.5)84 b(Disassem)n(bler)p Black 75 w(.)42
b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 132
w(4)p Black 0 0 1 TeXcolorrgb 863 2502 a(2.6)84 b(Mo)r(dule)28
b(system)p Black 62 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 132 w(4)p Black 0 0 1 TeXcolorrgb 863 2603 a(2.7)84
b(Library)p Black 78 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)p Black 132 w(6)p Black 0 0 1 TeXcolorrgb
739 2789 a Fm(3)76 b(Command)32 b(pro)s(cessor)p Black
1839 w(7)p 0 0 1 TeXcolorrgb 863 2891 a Fr(3.1)84 b(Curren)n(t)27
b(fo)r(cus)h(v)-5 b(alue)27 b(and)h Fo(##)p Black 73
w Fr(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)p Black 132 w(7)p Black 0 0 1 TeXcolorrgb
863 2992 a(3.2)84 b(Command)28 b(lev)n(els)p Black 77
w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 132 w(8)p
Black 0 0 1 TeXcolorrgb 863 3094 a(3.3)84 b(Logistical)27
b(commands)p Black 43 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 132 w(9)p Black 0 0 1 TeXcolorrgb 863 3196 a(3.4)84
b(Mo)r(dule)28 b(commands)p Black 55 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)p Black 132 w(9)p Black 0 0 1 TeXcolorrgb 863 3297
a(3.5)84 b(Debugging)27 b(commands)p Black 70 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)p Black 132 w(9)p Black 0 0 1
TeXcolorrgb 863 3399 a(3.6)84 b(Pro\014ling)26 b(commands)p
Black 81 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90
w(11)p Black 0 0 1 TeXcolorrgb 1054 3500 a(3.6.1)94 b(Ho)n(w)27
b(the)h(pro\014ler)f(w)n(orks)p Black 31 w(.)42 b(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(16)p Black 0 0 1 TeXcolorrgb 863 3602 a(3.7)84
b(Settings)p Black 60 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)p Black 90 w(17)p Black 0 0 1 TeXcolorrgb
863 3703 a(3.8)84 b(Insp)r(ection)28 b(mo)r(de)p Black
76 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90
w(19)p Black 0 0 1 TeXcolorrgb 863 3805 a(3.9)84 b(Command)28
b(programs)p Black 61 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(21)p Black 0 0 1 TeXcolorrgb 863 3906 a(3.10)h(Building)28
b(images)p Black 28 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(21)p Black 0 0 1 TeXcolorrgb 863 4008 a(3.11)h(Resource)27
b(query)g(and)g(con)n(trol)p Black 64 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(22)p Black 0 0 1 TeXcolorrgb 863 4110 a(3.12)h(Threads)p
Black 54 w(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(23)p Black 0 0 1 TeXcolorrgb 863 4211 a(3.13)h(Quite)28
b(obscure)p Black 40 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
p Black 90 w(23)p Black 0 0 1 TeXcolorrgb 739 4397 a
Fm(4)76 b(Mo)s(dule)31 b(system)p Black 2008 w(25)p 0 0 1
TeXcolorrgb 863 4498 a Fr(4.1)84 b(In)n(tro)r(duction)p
Black 26 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(25)p Black 0 0 1 TeXcolorrgb 863 4600 a(4.2)84
b(The)28 b(con\014guration)e(language)p Black 68 w(.)41
b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)p Black 90 w(26)p Black 0 0 1 TeXcolorrgb
863 4702 a(4.3)84 b(In)n(terfaces)p Black 66 w(.)42 b(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(28)p Black
0 0 1 TeXcolorrgb 863 4803 a(4.4)84 b(Macros)p Black
24 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(29)p Black 0 0 1 TeXcolorrgb 863 4905 a(4.5)84
b(Higher-order)26 b(mo)r(dules)p Black 82 w(.)42 b(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
p Black 90 w(30)p Black 0 0 1 TeXcolorrgb 863 5006 a(4.6)84
b(Compiling)28 b(and)f(linking)p Black 58 w(.)42 b(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
p Black 90 w(30)p Black Black 2138 5255 a(iv)p Black
eop end
%%Page: 5 5
TeXDict begin 5 4 bop 0 TeXcolorgray Black Black Black
0 0 1 TeXcolorrgb 415 523 a Fr(4.7)84 b(Seman)n(tics)27
b(of)h(con\014guration)e(m)n(utation)p Black 66 w(.)42
b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(30)p Black 0 0 1 TeXcolorrgb 415 625 a(4.8)84
b(Command)27 b(pro)r(cessor)f(supp)r(ort)p Black 81 w(.)41
b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)p Black 90 w(31)p Black 0 0 1 TeXcolorrgb 415
728 a(4.9)84 b(Con\014guration)26 b(pac)n(k)-5 b(ages)p
Black 26 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(34)p
Black 0 0 1 TeXcolorrgb 415 830 a(4.10)g(Discussion)p
Black 37 w(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(35)p Black 0 0 1 TeXcolorrgb 291 1017 a Fm(5)76
b(Libraries)p Black 2274 w(38)p 0 0 1 TeXcolorrgb 415
1119 a Fr(5.1)84 b(General)27 b(utilities)p Black 27
w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90
w(38)p Black 0 0 1 TeXcolorrgb 415 1222 a(5.2)84 b(Prett)n(y-prin)n
(ting)p Black 59 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(40)p Black 0 0 1 TeXcolorrgb 415 1324 a(5.3)84
b(Bit)n(wise)27 b(in)n(teger)g(op)r(erations)p Black
52 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(40)p Black 0 0 1
TeXcolorrgb 415 1426 a(5.4)84 b(Byte)28 b(v)n(ectors)p
Black 24 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(40)p Black 0 0 1 TeXcolorrgb 415 1528 a(5.5)84
b(Sparse)27 b(v)n(ectors)p Black 25 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)p Black 90 w(41)p Black 0 0 1 TeXcolorrgb
415 1631 a(5.6)84 b(Cells)p Black 46 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(41)p
Black 0 0 1 TeXcolorrgb 415 1733 a(5.7)84 b(Queues)p
Black 22 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)p Black 90 w(41)p Black 0 0 1 TeXcolorrgb 415 1835
a(5.8)84 b(Arra)n(ys)p Black 41 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(42)p Black 0 0 1
TeXcolorrgb 415 1938 a(5.9)84 b(Records)p Black 62 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(44)p Black 0 0 1 TeXcolorrgb 606 2040 a(5.9.1)94
b(Lo)n(w-lev)n(el)26 b(access)g(to)h(records)p Black
79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)p Black 90 w(45)p Black 0 0 1 TeXcolorrgb 606 2142
a(5.9.2)94 b(Record)26 b(t)n(yp)r(es)p Black 63 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(45)p Black 0 0 1
TeXcolorrgb 415 2244 a(5.10)g(Finite)28 b(record)f(t)n(yp)r(es)p
Black 48 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black
90 w(47)p Black 0 0 1 TeXcolorrgb 415 2347 a(5.11)g(Sets)28
b(o)n(v)n(er)e(\014nite)i(t)n(yp)r(es)p Black 45 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(48)p Black 0 0 1
TeXcolorrgb 415 2449 a(5.12)g(Hash)27 b(tables)p Black
57 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(50)p Black 0 0 1 TeXcolorrgb 415 2551 a(5.13)g(P)n(ort)26
b(extensions)p Black 48 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(50)p Black 0 0 1 TeXcolorrgb 415 2654 a(5.14)g(Fluid)28
b(bindings)p Black 84 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(52)p Black 0 0 1 TeXcolorrgb 415 2756 a(5.15)g(OS)27
b(strings)p Black 36 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)p Black 90 w(53)p Black 0 0 1 TeXcolorrgb 415
2858 a(5.16)g(Shell)28 b(commands)p Black 22 w(.)42 b(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)p Black 90 w(54)p Black 0 0 1 TeXcolorrgb
415 2960 a(5.17)g(So)r(c)n(k)n(ets)p Black 82 w(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(55)p Black
0 0 1 TeXcolorrgb 415 3063 a(5.18)g(Pro\014ling)p Black
39 w(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(56)p Black 0 0 1 TeXcolorrgb 415 3165 a(5.19)g(Macros)26
b(for)h(writing)g(lo)r(ops)p Black 42 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(58)p Black 0 0 1 TeXcolorrgb 606 3267 a(5.19.1)52
b Fo(Iterate)p Black 35 w Fr(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
p Black 90 w(58)p Black 0 0 1 TeXcolorrgb 606 3370 a(5.19.2)52
b Fo(Reduce)p Black 79 w Fr(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
p Black 90 w(59)p Black 0 0 1 TeXcolorrgb 606 3472 a(5.19.3)52
b(Sequence)27 b(t)n(yp)r(es)p Black 53 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(60)p Black 0 0 1 TeXcolorrgb 606 3574 a(5.19.4)52
b(Sync)n(hronous)26 b(sequences)p Black 25 w(.)41 b(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(61)p Black 0 0 1 TeXcolorrgb 606 3676 a(5.19.5)52
b(Examples)p Black 57 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(61)p Black 0 0 1 TeXcolorrgb 606 3779 a(5.19.6)52
b(De\014ning)28 b(sequence)f(t)n(yp)r(es)p Black 57 w(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)p Black 90 w(62)p Black 0 0 1 TeXcolorrgb 606 3881
a(5.19.7)52 b(Expanded)27 b(co)r(de)p Black 47 w(.)41
b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(63)p Black 0 0 1
TeXcolorrgb 415 3983 a(5.20)g(Sorting)27 b(lists)g(and)h(v)n(ectors)p
Black 52 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(64)p
Black 0 0 1 TeXcolorrgb 606 4086 a(5.20.1)52 b(Design)27
b(rules)p Black 29 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(64)p Black 0 0 1 TeXcolorrgb 606 4188 a(5.20.2)52
b(Pro)r(cedure)26 b(sp)r(eci\014cation)p Black 82 w(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)p Black 90 w(67)p Black 0 0 1 TeXcolorrgb 606 4290
a(5.20.3)52 b(Algorithmic)27 b(prop)r(erties)p Black
37 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)p Black 90 w(75)p Black 0 0 1 TeXcolorrgb
415 4392 a(5.21)g(Regular)26 b(expressions)p Black 21
w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 90 w(76)p
Black 0 0 1 TeXcolorrgb 606 4495 a(5.21.1)52 b(Character)26
b(sets)p Black 79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black
90 w(76)p Black 0 0 1 TeXcolorrgb 606 4597 a(5.21.2)52
b(Anc)n(horing)p Black 33 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(77)p Black 0 0 1 TeXcolorrgb 606 4699 a(5.21.3)52
b(Comp)r(osite)27 b(expressions)p Black 40 w(.)41 b(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(78)p Black 0 0 1 TeXcolorrgb 606 4802 a(5.21.4)52
b(Case)27 b(sensitivit)n(y)p Black 35 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(78)p Black 0 0 1 TeXcolorrgb 606 4904 a(5.21.5)52
b(Submatc)n(hes)27 b(and)h(matc)n(hing)p Black 33 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 90 w(79)p Black 0 0 1 TeXcolorrgb 415 5006 a(5.22)g(SRFIs)p
Black 62 w(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
p Black 90 w(80)p Black Black 1701 5255 a(v)p Black eop
end
%%Page: 6 6
TeXDict begin 6 5 bop 0 TeXcolorgray Black Black Black
0 0 1 TeXcolorrgb 739 523 a Fm(6)76 b(Unico)s(de)p Black
2302 w(83)p 0 0 1 TeXcolorrgb 863 623 a Fr(6.1)84 b(Characters)26
b(and)h(their)h(co)r(des)p Black 84 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(83)p Black 0 0 1 TeXcolorrgb 863 724 a(6.2)84
b(Character)26 b(and)i(string)f(literals)p Black 30 w(.)41
b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)p Black 90 w(84)p Black 0 0 1 TeXcolorrgb
1054 824 a(6.2.1)94 b(Character)26 b(literals)p Black
33 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(84)p Black 0 0 1
TeXcolorrgb 1054 925 a(6.2.2)94 b(String)27 b(literals)p
Black 42 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90
w(84)p Black 0 0 1 TeXcolorrgb 1054 1025 a(6.2.3)94 b(Iden)n(ti\014ers)
27 b(and)h(sym)n(b)r(ol)f(literals)p Black 39 w(.)41
b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(85)p Black 0 0 1 TeXcolorrgb 863 1125 a(6.3)84
b(Character)26 b(classi\014cation)g(and)i(case)f(mappings)p
Black 20 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(85)p Black 0 0 1 TeXcolorrgb 863 1226 a(6.4)84
b(SRFI)28 b(14)p Black 48 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)p Black 90 w(86)p Black 0 0 1 TeXcolorrgb
863 1326 a(6.5)84 b(R6RS)p Black 77 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(86)p Black
0 0 1 TeXcolorrgb 863 1426 a(6.6)84 b(I/O)p Black 21
w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)p Black 90 w(87)p Black 0 0 1 TeXcolorrgb 1054 1527
a(6.6.1)94 b(T)-7 b(ext)28 b(co)r(decs)p Black 45 w(.)41
b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(87)p Black
0 0 1 TeXcolorrgb 1054 1627 a(6.6.2)94 b(T)-7 b(ext-co)r(dec)27
b(utilities)p Black 37 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90
w(87)p Black 0 0 1 TeXcolorrgb 1054 1728 a(6.6.3)94 b(Creating)27
b(text)h(co)r(decs)p Black 47 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black
90 w(88)p Black 0 0 1 TeXcolorrgb 863 1828 a(6.7)84 b(Default)29
b(enco)r(dings)p Black 23 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(89)p Black 0 0 1 TeXcolorrgb 739 2012 a Fm(7)76
b(Threads)p Black 2306 w(91)p 0 0 1 TeXcolorrgb 863 2112
a Fr(7.1)84 b(Creating)27 b(and)g(con)n(trolling)f(threads)p
Black 70 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)p Black 90 w(91)p Black 0 0 1 TeXcolorrgb
863 2213 a(7.2)84 b(Adv)-5 b(anced)28 b(thread)f(handling)p
Black 37 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(92)p Black
0 0 1 TeXcolorrgb 863 2313 a(7.3)84 b(Debugging)27 b(m)n(ultithreaded)h
(programs)p Black 28 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(92)p Black 0 0 1
TeXcolorrgb 863 2413 a(7.4)84 b(Optimistic)28 b(concurrency)p
Black 84 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(93)p
Black 0 0 1 TeXcolorrgb 863 2514 a(7.5)84 b(Condition)28
b(v)-5 b(ariables)p Black 33 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 90 w(96)p Black 0 0 1 TeXcolorrgb 863 2614 a(7.6)84
b(Mutual)28 b(exclusion)p Black 50 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)p Black 90 w(97)p Black 0 0 1 TeXcolorrgb 1054 2714
a(7.6.1)94 b(Lo)r(c)n(ks)p Black 71 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)p Black 90 w(97)p Black 0 0 1 TeXcolorrgb
1054 2815 a(7.6.2)94 b(Placeholders)p Black 81 w(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(97)p Black 0 0 1
TeXcolorrgb 863 2915 a(7.7)84 b(W)-7 b(riting)28 b(custom)f(sync)n
(hronization)f(abstractions)p Black 79 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)p Black 90 w(98)p Black 0 0 1 TeXcolorrgb
863 3016 a(7.8)84 b(Concurren)n(t)27 b(ML)g(abstractions)p
Black 29 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 90 w(99)p Black 0 0 1
TeXcolorrgb 1054 3116 a(7.8.1)94 b(Basic)27 b(rendezv)n(ous)f(com)n
(binators)p Black 30 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)p Black 90 w(99)p Black 0 0 1 TeXcolorrgb
1054 3216 a(7.8.2)94 b(Sync)n(hronous)26 b(c)n(hannels)p
Black 67 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(100)p Black 0 0 1
TeXcolorrgb 1054 3317 a(7.8.3)94 b(Sync)n(hronous)26
b(v)-5 b(ariables)p Black 57 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 49
w(100)p Black 0 0 1 TeXcolorrgb 1054 3417 a(7.8.4)94
b(Timeouts)p Black 66 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(102)p Black 0 0 1 TeXcolorrgb 1054 3517 a(7.8.5)94
b(CML)28 b(to)f(Sc)n(heme)h(corresp)r(ondence)p Black
79 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(102)p Black 0 0 1 TeXcolorrgb 739 3701 a Fm(8)76
b(Mixing)31 b(Sc)m(heme)h(48)f(and)h(C)p Black 1545 w(104)p
0 0 1 TeXcolorrgb 863 3802 a Fr(8.1)84 b(Av)-5 b(ailable)28
b(facilities)p Black 76 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(104)p Black 0 0 1 TeXcolorrgb 1054 3902 a(8.1.1)94
b(Sc)n(heme)28 b(structures)p Black 71 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(105)p Black 0 0 1 TeXcolorrgb 1054 4002 a(8.1.2)94
b(C)28 b(naming)f(con)n(v)n(en)n(tions)p Black 55 w(.)42
b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)p Black 49 w(105)p Black 0 0 1 TeXcolorrgb 1054
4103 a(8.1.3)94 b(Garbage)26 b(collection)h(and)g(reference)g(ob)5
b(jects)p Black 37 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(105)p Black 0 0 1 TeXcolorrgb 863 4203 a(8.2)84
b(Shared)27 b(bindings)p Black 28 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)p Black 49 w(107)p Black 0 0 1 TeXcolorrgb 1054
4304 a(8.2.1)94 b(Exp)r(orting)26 b(Sc)n(heme)i(v)-5
b(alues)27 b(to)h(C)p Black 83 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(107)p Black 0 0 1
TeXcolorrgb 1054 4404 a(8.2.2)94 b(Exp)r(orting)26 b(C)i(v)-5
b(alues)27 b(to)h(Sc)n(heme)p Black 83 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(107)p Black
0 0 1 TeXcolorrgb 1054 4504 a(8.2.3)94 b(Complete)28
b(shared)e(binding)i(in)n(terface)p Black 65 w(.)42 b(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(108)p Black
0 0 1 TeXcolorrgb 863 4605 a(8.3)84 b(Calling)27 b(C)h(functions)g
(from)f(Sc)n(heme)p Black 57 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(108)p
Black 0 0 1 TeXcolorrgb 863 4705 a(8.4)84 b(Dynamic)28
b(loading)p Black 58 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p
Black 49 w(109)p Black 0 0 1 TeXcolorrgb 863 4805 a(8.5)84
b(Accessing)27 b(Sc)n(heme)h(data)f(from)g(C)p Black
71 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)p Black 49 w(110)p Black 0 0 1 TeXcolorrgb
1054 4906 a(8.5.1)94 b(Constan)n(ts)p Black 44 w(.)42
b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black 49 w(111)p
Black 0 0 1 TeXcolorrgb 1054 5006 a(8.5.2)94 b(Con)n(v)n(erting)26
b(v)-5 b(alues)p Black 84 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black
49 w(111)p Black Black 2138 5255 a(vi)p Black eop end
%%Page: 7 7
TeXDict begin 7 6 bop 0 TeXcolorgray Black Black Black
0 0 1 TeXcolorrgb 606 523 a Fr(8.5.3)94 b(C)27 b(v)n(ersions)f(of)i(Sc)
n(heme)f(pro)r(cedures)p Black 61 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(114)p Black 0 0 1
TeXcolorrgb 415 623 a(8.6)84 b(Calling)27 b(Sc)n(heme)h(functions)f
(from)h(C)p Black 57 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(115)p Black 0 0 1
TeXcolorrgb 415 723 a(8.7)84 b(In)n(teracting)27 b(with)h(the)g(Sc)n
(heme)f(heap)p Black 30 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(115)p Black
0 0 1 TeXcolorrgb 606 823 a(8.7.1)94 b(Registering)26
b(global)h(references)p Black 83 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(116)p Black
0 0 1 TeXcolorrgb 606 923 a(8.7.2)94 b(Lo)r(cal)27 b(bu\013ers)p
Black 69 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48
w(117)p Black 0 0 1 TeXcolorrgb 606 1023 a(8.7.3)94 b(Sp)r(ecial)27
b(treatmen)n(t)h(for)f(b)n(yte)g(v)n(ectors)p Black 76
w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(117)p Black 0 0 1 TeXcolorrgb 606 1123 a(8.7.4)94
b(Memory)26 b(o)n(v)n(erhead)p Black 81 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(118)p Black 0 0 1 TeXcolorrgb 606 1223 a(8.7.5)94
b(Keeping)27 b(C)g(data)g(structures)g(in)h(the)g(Sc)n(heme)f(heap)p
Black 68 w(.)41 b(.)h(.)g(.)f(.)h(.)p Black 48 w(120)p
Black 0 0 1 TeXcolorrgb 606 1323 a(8.7.6)94 b(C)27 b(co)r(de)h(and)f
(heap)h(images)p Black 39 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(121)p
Black 0 0 1 TeXcolorrgb 415 1423 a(8.8)84 b(Using)27
b(Sc)n(heme)h(records)e(in)i(C)f(co)r(de)p Black 24 w(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)p Black 48 w(121)p Black 0 0 1 TeXcolorrgb 415 1523
a(8.9)84 b(Raising)27 b(exceptions)g(from)g(external)g(co)r(de)p
Black 67 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)p Black 48 w(122)p Black 0 0 1 TeXcolorrgb 415 1623
a(8.10)g(External)26 b(ev)n(en)n(ts)p Black 44 w(.)42
b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(123)p
Black 0 0 1 TeXcolorrgb 606 1723 a(8.10.1)52 b(Collecting)27
b(external)g(ev)n(en)n(ts)f(in)i(external)f(co)r(de)p
Black 24 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black
48 w(124)p Black 0 0 1 TeXcolorrgb 606 1823 a(8.10.2)52
b(Handling)27 b(external)g(ev)n(en)n(ts)g(in)h(Sc)n(heme)p
Black 79 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(125)p Black 0 0 1 TeXcolorrgb 415 1923 a(8.11)g(Unsafe)28
b(functions)g(and)f(macros)p Black 78 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(126)p Black 0 0 1 TeXcolorrgb 415 2023 a(8.12)g(Con)n(v)n
(erting)26 b(external)h(co)r(de)g(to)h(the)g(new)f(foreign-function)g
(in)n(terface)p Black 24 w(.)42 b(.)p Black 48 w(127)p
Black 0 0 1 TeXcolorrgb 291 2206 a Fm(9)76 b(Access)32
b(to)g(POSIX)p Black 1874 w(129)p 0 0 1 TeXcolorrgb 415
2306 a Fr(9.1)84 b(Pro)r(cess)26 b(primitiv)n(es)p Black
77 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(129)p
Black 0 0 1 TeXcolorrgb 606 2406 a(9.1.1)94 b(Pro)r(cess)26
b(creation)g(and)h(termination)p Black 43 w(.)42 b(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(130)p Black
0 0 1 TeXcolorrgb 606 2506 a(9.1.2)94 b Fo(Exec)p Black
38 w Fr(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(130)p Black 0 0 1 TeXcolorrgb 415 2606 a(9.2)84
b(Signals)p Black 31 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)p Black 48 w(131)p Black 0 0 1 TeXcolorrgb
606 2706 a(9.2.1)94 b(POSIX)27 b(signals)p Black 73 w(.)41
b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(131)p Black 0 0 1
TeXcolorrgb 606 2806 a(9.2.2)94 b(Other)27 b(signals)p
Black 55 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48
w(132)p Black 0 0 1 TeXcolorrgb 606 2906 a(9.2.3)94 b(Sending)27
b(signals)p Black 47 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(133)p Black 0 0 1 TeXcolorrgb 606 3006 a(9.2.4)94
b(Receiving)27 b(signals)p Black 47 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(133)p Black 0 0 1 TeXcolorrgb 415 3106 a(9.3)84
b(Pro)r(cess)26 b(en)n(vironmen)n(t)p Black 52 w(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(134)p Black 0 0 1
TeXcolorrgb 606 3206 a(9.3.1)94 b(Pro)r(cess)26 b(iden)n(ti\014cation)p
Black 22 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(134)p Black 0 0 1
TeXcolorrgb 606 3306 a(9.3.2)94 b(En)n(vironmen)n(t)26
b(v)-5 b(ariables)p Black 45 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48
w(134)p Black 0 0 1 TeXcolorrgb 415 3406 a(9.4)84 b(Users)27
b(and)g(groups)p Black 46 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(134)p Black 0 0 1 TeXcolorrgb 415 3506 a(9.5)84
b(OS)27 b(and)h(mac)n(hine)f(iden)n(ti\014cation)p Black
28 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)p Black 48 w(135)p Black 0 0 1 TeXcolorrgb
415 3606 a(9.6)84 b(Files)28 b(and)f(directories)p Black
68 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(136)p
Black 0 0 1 TeXcolorrgb 606 3706 a(9.6.1)94 b(Directory)26
b(streams)p Black 82 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48
w(136)p Black 0 0 1 TeXcolorrgb 606 3806 a(9.6.2)94 b(W)-7
b(orking)26 b(directory)p Black 70 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(136)p Black 0 0 1 TeXcolorrgb 606 3906 a(9.6.3)94
b(File)28 b(creation)e(and)i(remo)n(v)-5 b(al)p Black
61 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)p Black 48 w(136)p Black 0 0 1 TeXcolorrgb 606
4006 a(9.6.4)94 b(File)28 b(information)p Black 78 w(.)42
b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)p Black 48 w(138)p Black 0 0 1 TeXcolorrgb
606 4106 a(9.6.5)94 b(File)28 b(mo)r(des)p Black 78 w(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(139)p Black
0 0 1 TeXcolorrgb 606 4206 a(9.6.6)94 b(Sym)n(b)r(olic)27
b(links)p Black 76 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black
48 w(140)p Black 0 0 1 TeXcolorrgb 415 4306 a(9.7)84
b(Time)28 b(and)f(Date)p Black 57 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)p Black 48 w(140)p Black 0 0 1 TeXcolorrgb 606
4406 a(9.7.1)94 b(Time)p Black 25 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)p Black 48 w(141)p Black 0 0 1 TeXcolorrgb
606 4506 a(9.7.2)94 b(Date)p Black 40 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)p Black 48 w(141)p Black 0 0 1 TeXcolorrgb
415 4606 a(9.8)84 b(I/O)p Black 20 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(143)p
Black 0 0 1 TeXcolorrgb 415 4706 a(9.9)84 b(Regular)26
b(expressions)p Black 21 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p
Black 48 w(145)p Black 0 0 1 TeXcolorrgb 415 4806 a(9.10)g(Syslog)27
b(facilit)n(y)p Black 41 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)p Black 48 w(146)p Black 0 0 1 TeXcolorrgb 415 4906
a(9.11)g(Error)25 b(co)r(des)p Black 60 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)p Black 48 w(149)p Black 0 0 1
TeXcolorrgb 606 5006 a(9.11.1)52 b(POSIX)27 b(errnos)p
Black 26 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)p Black 48
w(150)p Black Black 1678 5255 a(vii)p Black eop end
%%Page: 8 8
TeXDict begin 8 7 bop 0 TeXcolorgray Black Black Black
0 0 1 TeXcolorrgb 863 523 a Fr(9.12)42 b(C)28 b(to)f(Sc)n(heme)h
(corresp)r(ondence)p Black 21 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)p Black
49 w(152)p Black 0 0 1 TeXcolorrgb 739 706 a Fm(10)28
b(Bibliograph)m(y)p Black 2061 w(154)p Black 2115 5255
a Fr(viii)p Black eop end
%%Page: 1 9
TeXDict begin 1 8 bop 0 TeXcolorgray Black Black Black
291 1146 a Fl(Chapter)64 b(1)291 1561 y Fp(In)-6 b(tro)6
b(duction)291 1993 y Fr(Sc)n(heme)32 b(48)g(is)h(an)g(implemen)n
(tation)g(of)g(the)g(Sc)n(heme)g(programming)e(language)g(as)h(de-)291
2092 y(scrib)r(ed)d(in)h(the)g(Revised)1102 2062 y Fk(5)1169
2092 y Fr(Rep)r(ort)g(on)f(the)i(Algorithmic)e(Language)f(Sc)n(heme)i
([)p 0 0 1 TeXcolorrgb(6)p Black -1 w(].)44 b(It)30 b(is)291
2192 y(based)f(on)h(a)g(compiler)f(and)h(in)n(terpreter)f(for)h(a)f
(virtual)h(Sc)n(heme)g(mac)n(hine.)44 b(Sc)n(heme)30
b(48)291 2291 y(tries)d(to)h(b)r(e)g(faithful)h(to)f(the)g(Revised)1508
2261 y Fk(5)1573 2291 y Fr(Sc)n(heme)g(Rep)r(ort,)g(pro)n(viding)f
(neither)h(more)f(nor)291 2391 y(less)d(in)h(the)g(initial)g(user)f(en)
n(vironmen)n(t.)35 b(\(This)25 b(is)f(not)h(to)g(sa)n(y)e(that)i(more)f
(isn't)h(a)n(v)-5 b(ailable)291 2491 y(in)27 b(other)g(en)n(vironmen)n
(ts;)g(see)g(b)r(elo)n(w.\))415 2590 y(Sc)n(heme)d(48)g(is)g(under)h
(con)n(tin)n(ual)e(dev)n(elopmen)n(t.)35 b(Please)23
b(rep)r(ort)h(bugs,)h(esp)r(ecially)f(in)291 2690 y(the)f(VM,)g(esp)r
(ecially)f(core)f(dumps,)j(to)f(sc)n(heme-48-bugs@s48.org.)30
b(Include)22 b(the)h(v)n(ersion)291 2790 y(n)n(um)n(b)r(er)28
b(x.yy)h(from)g(the)h("W)-7 b(elcome)28 b(to)h(Sc)n(heme)g(48)g(x.yy")f
(greeting)g(message)g(in)h(y)n(our)291 2889 y(bug)35
b(rep)r(ort.)59 b(It)36 b(is)f(a)g(goal)f(of)i(this)f(pro)5
b(ject)35 b(to)g(pro)r(duce)g(a)g(bullet-pro)r(of)g(system;)k(w)n(e)291
2989 y(w)n(an)n(t)29 b(no)h(bugs)f(and,)i(esp)r(ecially)-7
b(,)30 b(no)g(crashes.)42 b(\(There)30 b(are)f(a)h(few)g(kno)n(wn)f
(bugs,)i(listed)291 3088 y(in)c(the)h Fo(doc/todo.txt)23
b Fr(\014le)28 b(that)g(comes)f(with)h(the)g(distribution.\))415
3188 y(Send)d(a)f(message)e(to)j(sc)n(heme-48-request@s48.org)18
b(with)25 b(sub)5 b(ject)24 b(`subscrib)r(e')g(to)h(b)r(e)291
3288 y(put)g(on)g(a)g(mailing)g(list)g(for)g(announcemen)n(ts,)g
(discussion,)g(bug)g(rep)r(orts,)g(and)g(bug)g(\014xes.)415
3387 y(The)20 b(name)g(`Sc)n(heme)f(48')g(commemorates)f(our)h(ha)n
(ving)g(written)h(the)g(original)e(v)n(ersion)291 3487
y(in)27 b(fort)n(y-eigh)n(t)g(hours,)f(on)i(August)f(6th)h(and)f(7th,)h
(1986.)p Black 1702 5255 a(1)p Black eop end
%%Page: 2 10
TeXDict begin 2 9 bop 0 TeXcolorgray Black Black Black
739 1148 a Fl(Chapter)65 b(2)739 1564 y Fp(User's)76
b(guide)739 1998 y Fr(This)33 b(c)n(hapter)f(details)h(Sc)n(heme)g
(48's)f(user)g(in)n(terface:)47 b(its)33 b(command-line)f(argumen)n
(ts,)739 2098 y(command)27 b(pro)r(cessor,)f(debugger,)g(and)h(so)g
(forth.)739 2382 y Fj(2.1)135 b(Command)45 b(line)h(argumen)l(ts)739
2567 y Fr(A)28 b(few)g(command)f(line)h(argumen)n(ts)e(are)h(pro)r
(cessed)f(b)n(y)h(Sc)n(heme)h(48)f(as)g(it)h(starts)e(up.)863
2669 y Fo(scheme48)f Fr([)p Fo(-i)i Fq(image)6 b Fr(])29
b([)p Fo(-h)e Fq(he)l(apsize)6 b Fr(])30 b([)p Fo(-a)c
Fq(ar)l(gument)j(.)13 b(.)g(.)g Fr(])p Black 739 2859
a Fo(-i)31 b Fi(image)p Black 49 w Fr(sp)r(eci\014es)26
b(a)h(heap)f(image)g(\014le)h(to)g(resume.)36 b(This)27
b(defaults)g(to)f(a)h(heap)f(image)946 2958 y(that)j(runs)e(a)h(Sc)n
(heme)f(command)h(pro)r(cessor.)36 b(Heap)27 b(images)g(are)g(created)g
(b)n(y)h(the)946 3058 y Fo(,dump)e Fr(and)h Fo(,build)42
b(commands)p Fr(,)24 b(for)j(whic)n(h)h(see)f(b)r(elo)n(w.)p
Black 739 3231 a Fo(-h)k Fi(he)-5 b(apsize)p Black 49
w Fr(sp)r(eci\014es)23 b(ho)n(w)g(m)n(uc)n(h)h(space)f(should)g(b)r(e)h
(reserv)n(ed)e(for)h(allo)r(cation.)35 b Fq(He)l(ap-)946
3331 y(size)f Fr(is)27 b(in)g(w)n(ords)f(\(where)h(one)f(w)n(ord)g(=)h
(4)f(b)n(ytes\),)h(and)g(co)n(v)n(ers)e(b)r(oth)i(semispaces,)946
3431 y(only)h(one)g(of)g(whic)n(h)g(is)g(in)h(use)f(at)g(an)n(y)f(giv)n
(en)g(time)i(\(except)f(during)g(garbage)e(col-)946 3530
y(lection\).)59 b(Cons)34 b(cells)g(are)g(curren)n(tly)f(3)i(w)n(ords,)
g(so)f(if)h(y)n(ou)f(w)n(an)n(t)g(to)g(mak)n(e)g(sure)946
3630 y(y)n(ou)28 b(can)g(allo)r(cate)f(a)h(million)h(cons)f(cells,)g(y)
n(ou)g(should)g(sp)r(ecify)h Fo(-h)43 b(6000000)26 b
Fr(\(ac-)946 3730 y(tually)e(somewhat)f(more)g(than)h(this,)h(to)f
(accoun)n(t)e(for)i(the)g(initial)g(heap)f(image)g(and)946
3829 y(breathing)35 b(ro)r(om\).)59 b(The)36 b(default)f(heap)g(size)g
(is)h(3000000)c(w)n(ords.)58 b(The)35 b(system)946 3929
y(will)28 b(use)f(a)g(larger)e(heap)i(if)h(the)f(sp)r(eci\014ed)h(\(or)
e(default\))i(size)f(is)g(less)g(than)g(the)h(size)946
4028 y(of)g(the)g(image)f(b)r(eing)h(resumed.)p Black
739 4202 a Fo(-a)j Fi(ar)-5 b(gument)34 b(.)15 b(.)f(.)p
Black 55 w Fr(is)36 b(only)e(useful)i(with)g(images)e(built)i(using)f
Fo(,build)p Fr(.)57 b(The)36 b(argu-)946 4301 y(men)n(ts)24
b(are)f(passed)g(as)g(a)g(list)i(of)e(OS)h(strings)f(\(see)g(section)p
0 0 1 TeXcolorrgb 24 w(5.15)p Black(\))f(to)i(the)g(pro)r(cedure)946
4401 y(sp)r(eci\014ed)k(in)g(the)g Fo(,build)d Fr(command.)37
b(F)-7 b(or)27 b(example:)p Black Black 946 4608 a Fo(>)44
b(,open)d(os-strings)946 4707 y(>)j(\(define)c(\(f)j(xs\))1121
4807 y(\(write)e(\(map)h(os-string->strin)o(g)37 b(xs\)\))1121
4907 y(\(newline\))1121 5006 y(0\))1742 b(;must)42 b(return)f(an)i
(integer)p Black 2150 5255 a Fr(2)p Black eop end
%%Page: 3 11
TeXDict begin 3 10 bop 0 TeXcolorgray Black Black Black
498 523 a Fo(>)43 b(,build)e(f)j(foo.image)498 623 y(>)f(,exit)498
722 y(\045)g(scheme48vm)d(-i)j(foo.image)c(-a)k(mumble)e("foo)h(x")h
(-h)g(5000000)498 822 y(\("mumble")d("foo)i(x")h("-h")f("5000000"\))498
922 y(\045)p Black 291 1091 a(-I)31 b Fi(image)39 b(ar)-5
b(gument)34 b(.)14 b(.)h(.)p Black 55 w Fr(is)44 b(equiv)-5
b(alen)n(t)43 b(to)g Fo(-i)f Fq(image)51 b Fo(-a)43 b
Fq(ar)l(gument)h(.)13 b(.)g(.)g Fr(.)84 b(On)498 1190
y(most)33 b(Unix-lik)n(e)f(systems,)i(a)f(heap)g(image)f(can)g(b)r(e)i
(made)e(executable)h(with)h(the)498 1290 y(follo)n(wing)27
b(Bourne)f(shell)i(commands:)p Black Black 498 1459 a
Fo(\045)43 b(\(echo)f('#!)p Fq(/s48/instal)t(l/pr)l(e\014x)10
b Fo(/lib/scheme48-1.9.2)o(/s)o(che)o(me)o(48)o(vm)37
b(-I')629 1559 y(cat)42 b Fq(original.image)6 b Fo(\))47
b(>)p Fq(new.image)498 1658 y Fo(\045)c(chmod)f(+x)h
Fq(new.image)415 1827 y Fr(The)36 b(usual)g(de\014nition)g(of)g(the)g
Fo(s48)f Fr(or)g Fo(scheme48)e Fr(command)i(is)h(actually)f(a)h(shell)
291 1927 y(script)29 b(that)i(starts)e(up)i(the)f(Sc)n(heme)g(48)g
(virtual)f(mac)n(hine)h(with)h(a)f Fo(-i)42 b Fq(image\014le)c
Fr(sp)r(ec-)291 2027 y(ifying)29 b(the)h(dev)n(elopmen)n(t)f(en)n
(vironmen)n(t)g(heap)g(image)g(and)h(a)f Fo(-o)42 b Fq(vm-exe)l
(cutable)36 b Fr(sp)r(ec-)291 2126 y(ifying)29 b(the)h(lo)r(cation)e
(of)i(the)g(virtual-mac)n(hine)e(executable)g(\(the)j(executable)e(is)g
(needed)291 2226 y(for)36 b(loading)g(external)f(co)r(de)i(on)f(some)h
(v)n(ersions)e(of)h(Unix;)42 b(see)36 b(section)p 0 0 1
TeXcolorrgb 37 w(8.4)p Black 36 w(for)g(more)291 2326
y(information\).)51 b(The)33 b(\014le)f Fo(go)g Fr(in)h(the)g(Sc)n
(heme)f(48)g(installation)g(source)f(directory)h(is)g(an)291
2425 y(example)27 b(of)g(suc)n(h)h(a)f(shell)g(script.)291
2695 y Fj(2.2)135 b(Command)45 b(pro)t(cessor)291 2876
y Fr(When)26 b(y)n(ou)f(in)n(v)n(ok)n(e)f(the)i(default)g(heap)f
(image,)g(a)h(command)f(pro)r(cessor)e(starts)i(running.)291
2976 y(The)20 b(command)f(pro)r(cessor)f(acts)i(as)f(b)r(oth)i(a)e
(read-ev)-5 b(al-prin)n(t)18 b(lo)r(op,)k(reading)d(expressions,)291
3076 y(ev)-5 b(aluating)31 b(them,)i(and)e(prin)n(ting)g(the)h
(results,)h(and)e(as)g(an)g(in)n(teractiv)n(e)g(debugger)f(and)291
3175 y(data)d(insp)r(ector.)36 b(See)28 b(Chapter)p 0 0 1
TeXcolorrgb 27 w(3)p Black 27 w(for)f(a)g(description)g(of)h(the)g
(command)f(pro)r(cessor.)291 3445 y Fj(2.3)135 b(Editing)291
3626 y Fr(W)-7 b(e)35 b(recommend)g(running)f(Sc)n(heme)h(48)g(under)f
(GNU)i(Emacs)e(or)h(XEmacs)f(using)h(the)291 3726 y Fo(cmuscheme48)17
b Fr(command)k(pac)n(k)-5 b(age.)34 b(This)22 b(is)f(in)i(the)f(Sc)n
(heme)g(48)f(distribution's)g Fo(emacs/)291 3826 y Fr(sub)r(directory)i
(and)i(is)f(included)h(in)g(XEmacs's)e Fo(scheme)g Fr(pac)n(k)-5
b(age.)34 b(It)25 b(is)f(a)g(v)-5 b(arian)n(t)24 b(of)h(the)291
3925 y Fo(cmuscheme)36 b Fr(library)-7 b(,)43 b(whic)n(h)e(comes)e(to)i
(us)f(courtesy)g(of)g(Olin)h(Shiv)n(ers,)h(formerly)e(of)291
4025 y(CMU.)28 b(Y)-7 b(ou)27 b(migh)n(t)h(w)n(an)n(t)f(to)g(put)h(the)
g(follo)n(wing)f(in)h(y)n(our)e(Emacs)h(init)h(\014le)g(\()p
Fo(.emacs)p Fr(\):)p Black Black 291 4167 a Fo(\(setq)41
b(scheme-program-n)o(ame)c("scheme48"\))291 4267 y(\(autoload)i
('run-scheme)726 4366 y("cmuscheme48")726 4466 y("Run)j(an)h(inferior)d
(Scheme)i(process.")726 4565 y(t\))291 4707 y Fr(The)32
b(Emacs)f(function)i Fo(run-scheme)28 b Fr(can)k(then)h(b)r(e)f(used)h
(to)f(start)f(a)h(pro)r(cess)f(running)291 4807 y(the)f(program)e
Fo(scheme48)f Fr(in)k(a)f(new)g(bu\013er.)45 b(T)-7 b(o)30
b(mak)n(e)f(the)i Fo(autoload)c Fr(and)j Fo(\(require)291
4907 y(...\))k Fr(forms)25 b(w)n(ork,)g(y)n(ou)f(will)i(also)f(need)g
(to)h(put)g(the)g(directory)e(con)n(taining)i Fo(cmuscheme)291
5006 y Fr(and)h(related)g(\014les)g(in)h(y)n(our)f(emacs)g(load-path:)p
Black 1702 5255 a(3)p Black eop end
%%Page: 4 12
TeXDict begin 4 11 bop 0 TeXcolorgray Black Black Black
Black Black 739 523 a Fo(\(setq)41 b(load-path)826 623
y(\(append)g(load-path)f('\(")p Fq(scheme-48-dir)l(e)l(ctory)7
b Fo(/emacs"\)\)\))739 791 y Fr(F)-7 b(urther)34 b(do)r(cumen)n(tation)
f(can)h(b)r(e)h(found)f(in)g(the)h(\014les)f Fo(emacs/cmuscheme)o(48.)o
(el)27 b Fr(and)739 890 y Fo(emacs/comint.el)p Fr(.)739
1169 y Fj(2.4)135 b(P)l(erformance)739 1352 y Fr(If)24
b(y)n(ou)e(w)n(an)n(t)h(to)g(generally)f(ha)n(v)n(e)g(y)n(our)g(co)r
(de)h(run)g(faster)g(than)g(it)h(normally)e(w)n(ould,)i(en)n(ter)739
1451 y Fo(inline-values)31 b Fr(mo)r(de)37 b(b)r(efore)f(loading)f(an)n
(ything.)63 b(Otherwise)36 b(calls)f(to)i(primitiv)n(es)739
1551 y(\(lik)n(e)e Fo(+)g Fr(and)g Fo(cons)p Fr(\))f(and)h(in-line)g
(pro)r(cedures)f(\(lik)n(e)h Fo(not)f Fr(and)h Fo(cadr)p
Fr(\))f(w)n(on't)h(b)r(e)h(op)r(en-)739 1651 y(co)r(ded,)27
b(and)h(programs)d(will)j(run)f(more)g(slo)n(wly)-7 b(.)863
1751 y(The)36 b(system)e(do)r(esn't)h(start)g(in)g Fo(inline-values)30
b Fr(mo)r(de)35 b(b)n(y)g(default)g(b)r(ecause)g(the)739
1851 y(Sc)n(heme)k(rep)r(ort)g(p)r(ermits)g(rede\014nitions)g(of)g
(built-in)h(pro)r(cedures.)70 b(With)41 b(this)e(mo)r(de)739
1950 y(set,)c(suc)n(h)e(rede\014nitions)h(don't)f(w)n(ork)g(according)e
(to)j(the)g(rep)r(ort,)g(b)r(ecause)f(previously)739
2050 y(compiled)f(calls)g(ma)n(y)g(ha)n(v)n(e)f(in-lined)i(the)g(old)f
(de\014nition,)i(lea)n(ving)d(no)h(opp)r(ortunit)n(y)g(to)739
2150 y(call)27 b(the)h(new)g(de\014nition.)863 2250 y
Fo(Inline-values)36 b Fr(mo)r(de)42 b(is)f(con)n(trolled)f(b)n(y)h(the)
h Fo(inline-values)36 b Fr(switc)n(h.)78 b Fo(,set)739
2350 y(inline-values)22 b Fr(and)28 b Fo(,unset)41 b(inline-values)22
b Fr(turn)28 b(it)g(on)f(and)h(o\013.)739 2628 y Fj(2.5)135
b(Disassem)l(bler)739 2811 y Fr(The)28 b Fo(,dis)e Fr(command)h(prin)n
(ts)g(out)h(the)g(disassem)n(bled)e(b)n(yte)i(co)r(des)f(of)g(a)h(pro)r
(cedure.)p Black Black 739 2980 a Fo(>)43 b(,dis)f(cons)739
3079 y(cons)826 3179 y(0)h(\(protocol)d(2\))826 3279
y(2)j(\(pop\))826 3378 y(3)g(\(make-stored-obje)o(ct)37
b(2)43 b(pair\))826 3478 y(6)g(\(return\))739 3578 y(>)739
3746 y Fr(The)32 b(curren)n(t)f(b)n(yte)g(co)r(des)h(are)e(listed)j(in)
f(the)g(\014le)g Fo(scheme/vm/inter)o(p/a)o(rc)o(h.s)o(cm)o
Fr(.)44 b(A)739 3845 y(somewhat)27 b(out-of-date)f(description)h(of)h
(them)g(can)f(b)r(e)h(found)g(in)g([)p 0 0 1 TeXcolorrgb(5)p
Black(].)863 3946 y(The)f(command)g(argumen)n(t)f(is)h(optional;)f(if)i
(unsupplied)f(it)h(defaults)f(to)g(the)g(curren)n(t)739
4045 y(fo)r(cus)h(ob)5 b(ject)27 b(\()p Fo(##)p Fr(\).)863
4146 y(The)h(disassem)n(bler)e(can)h(also)g(b)r(e)h(in)n(v)n(ok)n(ed)e
(on)h(con)n(tin)n(uations)g(and)g(templates.)739 4424
y Fj(2.6)135 b(Mo)t(dule)45 b(system)739 4607 y Fr(This)32
b(section)h(giv)n(es)e(a)h(brief)h(description)e(of)i(mo)r(dules)g(and)
f(related)g(en)n(tities.)52 b(F)-7 b(or)31 b(de-)739
4707 y(tailed)20 b(information,)h(including)f(a)f(description)g(of)h
(the)g(mo)r(dule)h(con\014guration)d(language,)739 4806
y(see)27 b(c)n(hapter)p 0 0 1 TeXcolorrgb 27 w(4)p Black(.)863
4907 y(A)39 b Fq(mo)l(dule)h Fr(is)e(an)h(isolated)f(namespace,)i(with)
g(visibilit)n(y)e(of)h(bindings)f(con)n(trolled)739 5006
y(b)n(y)30 b(mo)r(dule)h(descriptions)f(written)g(in)h(a)f(sp)r(ecial)g
(con\014guration)f(language.)44 b(A)31 b(mo)r(dule)p
Black 2150 5255 a(4)p Black eop end
%%Page: 5 13
TeXDict begin 5 12 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(ma)n(y)30 b(b)r(e)i(instan)n(tiated)f(as)g(a)g
Fq(p)l(ackage)p Fr(,)j(whic)n(h)d(is)h(an)f(en)n(vironmen)n(t)f(in)i
(whic)n(h)f(co)r(de)g(can)291 623 y(b)r(e)i(ev)-5 b(aluated.)53
b(Most)33 b(mo)r(dules)g(are)f(instan)n(tiated)h(only)f(once)h(and)g
(so)f(ha)n(v)n(e)g(a)h(unique)291 722 y(pac)n(k)-5 b(age.)49
b(A)32 b Fq(structur)l(e)f Fr(is)h(a)g(subset)g(of)h(the)f(bindings)g
(in)h(a)f(pac)n(k)-5 b(age.)49 b(Only)32 b(b)n(y)g(b)r(eing)291
822 y(included)38 b(in)f(a)g(structure)g(can)g(a)g(binding)h(b)r(e)g
(made)f(visible)g(in)h(other)f(pac)n(k)-5 b(ages.)65
b(A)291 922 y(structure)23 b(has)g(t)n(w)n(o)g(parts,)g(the)h(pac)n(k)
-5 b(age)22 b(whose)h(bindings)h(are)e(b)r(eing)i(exp)r(orted)f(and)h
(the)291 1021 y(set)29 b(of)h(names)f(that)h(are)f(to)h(b)r(e)g(exp)r
(orted.)43 b(This)30 b(set)f(of)h(names)f(is)h(called)f(an)h
Fq(interfac)l(e)p Fr(.)291 1121 y(A)e(mo)r(dule)f(then)i(has)e(three)g
(parts:)p Black 415 1282 a Fn(\017)p Black 41 w Fr(a)g(set)h(of)f
(structures)g(whose)g(bindings)h(are)e(to)i(b)r(e)g(visible)f(within)i
(the)f(mo)r(dule)p Black 415 1446 a Fn(\017)p Black 41
w Fr(the)g(source)e(co)r(de)i(to)f(b)r(e)h(ev)-5 b(aluated)28
b(within)g(the)g(mo)r(dule)p Black 415 1609 a Fn(\017)p
Black 41 w Fr(a)f(set)h(of)f(exp)r(orted)h(in)n(terfaces)291
1771 y(Instan)n(tiating)d(a)g(mo)r(dule)h(pro)r(duces)f(a)g(pac)n(k)-5
b(age)25 b(and)g(a)g(set)h(of)g(structures,)f(one)h(for)f(eac)n(h)291
1870 y(of)i(the)h(exp)r(orted)f(in)n(terfaces.)415 1970
y(The)f(follo)n(wing)f(example)h(uses)f Fo(define-structure)20
b Fr(to)26 b(create)f(a)g(mo)r(dule)i(that)f(im-)291
2070 y(plemen)n(ts)g(simple)g(cells)g(as)f(pairs,)g(instan)n(tiates)h
(this)g(mo)r(dule,)h(and)f(binds)g(the)h(resulting)291
2169 y(structure)j(to)g Fo(cells)p Fr(.)44 b(The)31 b(syn)n(tax)e
Fo(\(export)41 b Fq(name)33 b(.)13 b(.)g(.)g Fo(\))46
b Fr(creates)29 b(an)i(in)n(terface)f(con-)291 2269 y(taining)j
Fq(name)h(.)13 b(.)g(.)g Fr(.)51 b(The)32 b Fo(open)f
Fr(clause)h(lists)g(structures)f(whose)h(bindings)g(are)f(visible)291
2368 y(within)d(the)g(mo)r(dule.)37 b(The)28 b Fo(begin)d
Fr(clause)i(con)n(tains)g(source)f(co)r(de.)p Black Black
291 2530 a Fo(\(define-structu)o(re)37 b(cells)42 b(\(export)e
(make-cell)1685 2629 y(cell-ref)1685 2729 y(cell-set!\))378
2829 y(\(open)h(scheme\))378 2928 y(\(begin)g(\(define)g(\(make-cell)e
(x\))770 3028 y(\(cons)j('cell)f(x\)\))683 3128 y(\(define)g(cell-ref)f
(cdr\))683 3227 y(\(define)h(cell-set!)e(set-cdr!\)\)\))415
3388 y Fr(Cells)32 b(could)f(also)g(ha)n(v)n(e)f(b)r(een)i(implemen)n
(ted)h(using)e(the)h(record)f(facilit)n(y)g(describ)r(ed)291
3488 y(in)c(section)p 0 0 1 TeXcolorrgb 28 w(5.9)p Black
26 w(and)h(a)n(v)-5 b(ailable)26 b(in)i(structure)f Fo
(define-record-ty)o(pe)p Fr(.)p Black Black 291 3649
a Fo(\(define-structu)o(re)37 b(cells)42 b(\(export)e(make-cell)1685
3749 y(cell-ref)1685 3849 y(cell-set!\))378 3948 y(\(open)h(scheme)g
(define-record-typ)o(es\))378 4048 y(\(begin)g(\(define-record-t)o(yp)o
(e)d(cell)k(:cell)770 4148 y(\(make-cell)d(value\))770
4247 y(cell?)770 4347 y(\(value)i(cell-ref)f(cell-set!\)\)\)\))415
4508 y Fr(With)30 b(either)e(de\014nition)i(the)f(resulting)f
(structure)g(can)h(b)r(e)g(used)g(in)g(other)f(mo)r(dules)291
4608 y(b)n(y)f(including)i Fo(cells)c Fr(in)j(an)g Fo(open)e
Fr(clause.)415 4707 y(The)32 b(command)g(in)n(terpreter)f(is)h(alw)n(a)
n(ys)f(op)r(erating)g(within)i(a)f(particular)e(pac)n(k)-5
b(age.)291 4807 y(Initially)29 b(this)h(is)f(a)g(pac)n(k)-5
b(age)28 b(in)i(whic)n(h)g(only)f(the)h(standard)e(Sc)n(heme)i
(bindings)f(are)g(vis-)291 4907 y(ible.)44 b(The)30 b(bindings)g(of)f
(other)h(structures)f(can)h(b)r(e)g(made)g(visible)f(b)n(y)h(using)g
(the)g Fo(,open)291 5006 y Fr(command)d(describ)r(ed)g(in)h(section)p
0 0 1 TeXcolorrgb 27 w(3.4)p Black 27 w(b)r(elo)n(w.)p
Black 1702 5255 a(5)p Black eop end
%%Page: 6 14
TeXDict begin 6 13 bop 0 TeXcolorgray Black Black Black
863 523 a Fr(Note)32 b(that)g(this)g(initial)g(pac)n(k)-5
b(age)30 b(do)r(es)h(not)h(include)g(the)g(con\014guration)e(language.)
739 623 y(Mo)r(dule)f(co)r(de)f(needs)g(to)h(b)r(e)f(ev)-5
b(aluated)29 b(in)f(the)h(con\014guration)e(pac)n(k)-5
b(age,)27 b(whic)n(h)i(can)f(b)r(e)739 722 y(done)f(b)n(y)h(using)f
(the)h Fo(,)p Fr(con\014g)e(command:)p Black Black 739
888 a Fo(>)43 b(,config)e(\(define-structur)o(e)c(cells)42
b(...\))739 988 y(>)h(,open)f(cells)739 1088 y(>)h(\(make-cell)d(4\))
739 1187 y('\(cell)h(.)i(4\))739 1287 y(>)g(\(define)e(c)i(\(make-cell)
c(4\)\))739 1386 y(>)k(\(cell-ref)d(c\))739 1486 y(4)739
1761 y Fj(2.7)135 b(Library)739 1942 y Fr(A)32 b(n)n(um)n(b)r(er)f(of)g
(useful)h(utilities)g(are)f(either)g(built)h(in)g(to)f(Sc)n(heme)h(48)e
(or)h(can)g(b)r(e)h(loaded)739 2042 y(from)26 b(an)g(external)g
(library)-7 b(.)35 b(These)26 b(utilities)h(are)f(not)g(visible)h(in)g
(the)f(user)g(en)n(vironmen)n(t)739 2142 y(b)n(y)31 b(default,)i(but)f
(can)e(b)r(e)i(made)f(a)n(v)-5 b(ailable)30 b(with)i(the)g
Fo(open)d Fr(command.)48 b(F)-7 b(or)31 b(example,)739
2241 y(to)c(use)h(the)g Fo(tables)d Fr(structure,)i(do)p
Black Black 739 2407 a Fo(>)43 b(,open)f(tables)739 2507
y(>)863 2673 y Fr(If)23 b(the)f(utilit)n(y)h(is)f(not)g(already)e
(loaded,)j(then)f(the)g Fo(,open)e Fr(command)i(will)g(load)g(it.)35
b(Or,)739 2773 y(y)n(ou)23 b(can)h(load)g(something)g(explicitly)g
(\(without)h(op)r(ening)f(it\))h(using)f(the)h Fo(load-package)739
2872 y Fr(command:)p Black Black 739 3038 a Fo(>)43 b(,load-package)38
b(queues)739 3138 y(>)43 b(,open)f(queues)863 3304 y
Fr(When)26 b(loading)f(a)g(utilit)n(y)-7 b(,)27 b(the)e(message)f
("Note:)36 b(optional)25 b(optimizer)g(not)g(in)n(v)n(ok)n(ed")739
3404 y(is)i(inno)r(cuous.)37 b(F)-7 b(eel)28 b(free)f(to)h(ignore)e
(it.)863 3503 y(See)i(also)f(the)h(pac)n(k)-5 b(age)26
b(system)h(do)r(cumen)n(tation,)g(in)h(c)n(hapter)p 0 0 1
TeXcolorrgb 27 w(4)p Black(.)863 3603 y(Not)e(all)f(of)g(the)g(the)h
(libraries)d(a)n(v)-5 b(ailable)24 b(in)i(Sc)n(heme)f(48)f(are)g
(describ)r(ed)h(in)g(this)h(man-)739 3703 y(ual.)33 b(All)19
b(are)f(listed)g(in)h(\014les)f Fo(rts-packages.scm)p
Fr(,)c Fo(comp-packages.sc)o(m)p Fr(,)g Fo(env-packages.scm)p
Fr(,)739 3802 y(and)33 b Fo(more-packages.scm)27 b Fr(in)34
b(the)g Fo(scheme)d Fr(directory)h(of)i(the)g(distribution,)h(and)f
(the)739 3902 y(bindings)27 b(they)g(exp)r(ort)g(are)f(listed)i(in)f
Fo(interfaces.scm)22 b Fr(and)27 b Fo(more-interfaces.)o(scm)739
4001 y Fr(in)h(the)g(same)f(directory)-7 b(.)p Black
2150 5255 a(6)p Black eop end
%%Page: 7 15
TeXDict begin 7 14 bop 0 TeXcolorgray Black Black Black
291 1146 a Fl(Chapter)64 b(3)291 1561 y Fp(Command)77
b(pro)6 b(cessor)291 1993 y Fr(This)28 b(c)n(hapter)f(details)h(Sc)n
(heme)g(48's)f(command)h(pro)r(cessor,)e(whic)n(h)i(incorp)r(orates)e
(b)r(oth)291 2092 y(a)k(read-ev)-5 b(al-prin)n(t)29 b(lo)r(op)i(and)f
(an)h(in)n(teractiv)n(e)f(debugger.)45 b(A)n(t)32 b(the)f
Fo(>)g Fr(prompt,)g(y)n(ou)f(can)291 2192 y(t)n(yp)r(e)h(either)g(a)g
(Sc)n(heme)h(form)f(\(expression)f(or)g(de\014nition\))j(or)d(a)h
(command)g(b)r(eginning)291 2291 y(with)h(a)g(comma.)49
b(In)32 b(insp)r(ection)g(mo)r(de)g(\(see)g(section)p
0 0 1 TeXcolorrgb 31 w(3.8)p Black(\))g(the)g(prompt)g(c)n(hanges)e(to)
i Fo(:)291 2391 y Fr(and)20 b(commands)h(no)f(longer)g(need)h(to)g(b)r
(e)g(preceded)g(b)n(y)g(a)f(comma;)j(input)f(b)r(eginning)e(with)291
2491 y(a)27 b(letter)i(or)e(digit)h(is)g(assumed)g(to)g(b)r(e)h(a)f
(command,)g(not)g(an)g(expression.)37 b(In)29 b(insp)r(ection)291
2590 y(mo)r(de)j(the)h(command)f(pro)r(cessor)e(prin)n(ts)i(out)g(a)g
(men)n(u)h(of)f(selectable)g(comp)r(onen)n(ts)f(for)291
2690 y(the)d(curren)n(t)e(ob)5 b(ject)28 b(of)f(in)n(terest.)291
2965 y Fj(3.1)135 b(Curren)l(t)45 b(fo)t(cus)g(v)-7 b(alue)45
b(and)f Fh(##)291 3146 y Fr(The)38 b(command)g(pro)r(cessor)e(k)n(eeps)
i(trac)n(k)f(of)i(a)f(curren)n(t)f Fq(fo)l(cus)j(value)p
Fr(.)70 b(This)39 b(v)-5 b(alue)38 b(is)291 3246 y(normally)22
b(the)i(last)f(v)-5 b(alue)24 b(returned)f(b)n(y)g(a)g(command.)35
b(If)24 b(a)f(command)h(returns)e(m)n(ultiple)291 3346
y(v)-5 b(alues)31 b(the)i(fo)r(cus)f(ob)5 b(ject)33 b(is)f(a)g(list)g
(of)g(the)h(v)-5 b(alues.)51 b(The)32 b(fo)r(cus)g(v)-5
b(alue)32 b(is)h(not)f(c)n(hanged)291 3445 y(if)27 b(a)g(command)f
(returns)g(no)h(v)-5 b(alues)26 b(or)h(a)f(distinguished)h(`unsp)r
(eci\014c')g(v)-5 b(alue.)37 b(Examples)291 3545 y(of)26
b(forms)h(that)g(return)f(this)i(unsp)r(eci\014c)f(v)-5
b(alue)27 b(are)f(de\014nitions,)h(uses)f(of)34 b Fo(set!)p
Fr(,)25 b(and)i Fo(\(if)291 3645 y(#f)42 b(0\))p Fr(.)36
b(It)28 b(prin)n(ts)g(as)f Fo(#)p Fn(f)p Fo(Unspecific)p
Fn(g)p Fr(.)415 3744 y(The)f(reader)e(used)i(b)n(y)g(the)g(command)g
(pro)r(cessor)d(reads)i Fo(##)g Fr(as)g(a)h(sp)r(ecial)f(expression)291
3844 y(that)i(ev)-5 b(aluates)27 b(to)h(the)g(curren)n(t)f(fo)r(cus)g
(ob)5 b(ject.)p Black Black 291 4010 a Fo(>)43 b(\(list)e('a)i('b\))291
4110 y('\(a)f(b\))291 4209 y(>)h(\(car)f(##\))291 4309
y('a)291 4408 y(>)h(\(symbol->string)37 b(##\))291 4508
y("a")291 4608 y(>)43 b(\(if)f(#f)h(0\))291 4707 y(#)p
Fn(f)p Fo(Unspecific)p Fn(g)291 4807 y Fo(>)g(##)291
4907 y("a")291 5006 y(>)p Black 1702 5255 a Fr(7)p Black
eop end
%%Page: 8 16
TeXDict begin 8 15 bop 0 TeXcolorgray Black Black Black
739 523 a Fj(3.2)135 b(Command)45 b(lev)l(els)739 718
y Fr(If)30 b(an)f(error,)e(k)n(eyb)r(oard)h(in)n(terrupt,)h(or)g(other)
f(breakp)r(oin)n(t)h(o)r(ccurs,)g(or)f(the)i Fo(,push)d
Fr(com-)739 817 y(mand)35 b(is)g(used,)i(the)e(command)g(pro)r(cessor)e
(in)n(v)n(ok)n(es)g(a)h(recursiv)n(e)f(cop)n(y)i(of)g(itself,)i(pre-)
739 917 y(serving)29 b(the)i(dynamic)f(state)g(of)h(the)g(program)d
(when)j(the)f(breakp)r(oin)n(t)g(o)r(ccurred.)44 b(The)739
1016 y(recursiv)n(e)32 b(in)n(v)n(o)r(cation)g(creates)g(a)h(new)g
Fq(c)l(ommand)j(level)p Fr(.)55 b(The)34 b(command)f(lev)n(els)g(form)
739 1116 y(a)d(stac)n(k)f(with)i(the)g(curren)n(t)f(lev)n(el)g(at)g
(the)h(top.)45 b(The)30 b(command)g(prompt)h(indicates)f(the)739
1216 y(n)n(um)n(b)r(er)g(of)h(stopp)r(ed)g(lev)n(els)e(b)r(elo)n(w)i
(the)g(curren)n(t)e(one:)43 b Fo(>)30 b Fr(or)g Fo(:)42
b Fr(for)30 b(the)h(base)f(lev)n(el)g(and)739 1315 y
Fq(n)6 b Fo(>)26 b Fr(or)g Fq(n)6 b Fo(:)36 b Fr(for)26
b(all)h(other)f(lev)n(els,)g(where)g Fq(n)33 b Fr(is)27
b(the)g(command-lev)n(el)e(nesting)i(depth.)37 b(The)739
1415 y Fo(levels)30 b Fr(setting)i(describ)r(ed)g(b)r(elo)n(w)f(can)h
(b)r(e)h(used)f(to)g(disable)f(the)i(automatic)e(pushing)739
1515 y(of)c(new)h(lev)n(els.)863 1621 y(The)33 b(command)f(pro)r
(cessor's)d(ev)-5 b(aluation)32 b(pac)n(k)-5 b(age)31
b(and)h(the)g(v)-5 b(alue)32 b(of)h(the)f(curren)n(t)739
1721 y(fo)r(cus)g(v)-5 b(alue)31 b(are)g(lo)r(cal)g(to)h(eac)n(h)f
(command)g(lev)n(el.)49 b(They)32 b(are)f(preserv)n(ed)f(when)i(a)f
(new)739 1820 y(lev)n(el)38 b(is)h(pushed)g(and)g(restored)e(when)i(it)
g(is)g(discarded.)70 b(The)39 b(settings)f(of)h(all)g(other)739
1920 y(settings)27 b(are)g(shared)f(b)n(y)i(all)f(command)g(lev)n(els.)
p Black Black 780 2130 a Fn(h)p Fr(eof)p Fn(i)946 2230
y Fr(Discards)f(the)h(curren)n(t)f(command)g(lev)n(el)g(and)g(resumes)g
(running)g(the)h(lev)n(el)f(do)n(wn.)946 2329 y Fn(h)p
Fr(eof)p Fn(i)32 b Fr(is)f(usually)g(con)n(trol-)p Fo(D)e
Fr(at)i(a)g(Unix)h(shell)f(or)g(con)n(trol-)p Fo(C)e
Fr(con)n(trol-)p Fo(D)g Fr(using)i(the)946 2429 y(Emacs)c
Fo(cmuscheme48)c Fr(library)-7 b(.)p Black Black 780
2622 a Fo(,pop)946 2722 y Fr(The)28 b(same)f(as)g Fn(h)p
Fr(eof)p Fn(i)p Fr(.)p Black Black 780 2915 a Fo(,proceed)41
b([)p Fq(exp)48 b Fo(...)p Fr(])946 3015 y(Pro)r(ceed)39
b(after)g(an)g(in)n(terrupt)g(or)f(error,)j(resuming)d(the)i(next)g
(command)f(lev)n(el)946 3114 y(do)n(wn,)i(deliv)n(ering)d(the)h(v)-5
b(alues)38 b(of)45 b Fq(exp)40 b(.)13 b(.)g(.)83 b Fr(to)39
b(the)g(con)n(tin)n(uation.)69 b(In)n(terrupt)946 3214
y(con)n(tin)n(uations)30 b(discard)g(an)n(y)h(returned)f(v)-5
b(alues.)47 b Fo(,Pop)29 b Fr(and)i Fo(,proceed)d Fr(ha)n(v)n(e)i(the)
946 3314 y(same)20 b(e\013ect)g(after)g(an)f(in)n(terrupt)h(but)g(b)r
(eha)n(v)n(e)f(di\013eren)n(tly)h(after)f(errors.)32
b Fo(,Proceed)946 3413 y Fr(restarts)37 b(the)h(erroneous)e
(computation)h(from)h(the)g(p)r(oin)n(t)g(where)g(the)g(error)e(o)r(c-)
946 3513 y(curred)f(\(although)h(not)g(all)f(errors)f(are)g(pro)r
(ceedable\))h(while)h Fo(,pop)f Fr(\(and)h Fn(h)p Fr(eof)p
Fn(i)p Fr(\))946 3613 y(discards)27 b(it)h(and)f(prompts)g(for)h(a)f
(new)g(command.)p Black Black 780 3806 a Fo(,push)946
3906 y Fr(Pushes)j(a)g(new)h(command)f(lev)n(el)g(on)h(ab)r(o)n(v)n(e)e
(the)i(curren)n(t)e(one.)46 b(This)30 b(is)h(useful)g(if)946
4005 y(the)25 b Fo(levels)d Fr(setting)i(has)f(b)r(een)i(used)f(to)g
(disable)f(the)i(automatic)e(pushing)h(of)g(new)946 4105
y(lev)n(els)j(for)g(errors)f(and)h(in)n(terrupts.)p Black
Black 780 4298 a Fo(,reset)42 b([)p Fq(numb)l(er)9 b
Fo(])946 4398 y Fr(P)n(ops)18 b(do)n(wn)g(to)h(a)g(giv)n(en)f(lev)n(el)
g(and)h(restarts)e(that)j(lev)n(el.)33 b Fq(Numb)l(er)27
b Fr(defaults)19 b(to)g(zero,)946 4497 y Fo(,reset)26
b Fr(restarts)g(the)i(command)f(pro)r(cessor,)f(discarding)g(all)h
(existing)g(lev)n(els.)863 4707 y(Whenev)n(er)d(mo)n(ving)f(to)h(an)f
(existing)h(lev)n(el,)g(either)g(b)n(y)g(sending)g(an)f
Fn(h)p Fr(eof)p Fn(i)i Fr(or)e(b)n(y)h(using)739 4807
y Fo(,reset)31 b Fr(or)h(the)i(other)f(commands)g(listed)g(ab)r(o)n(v)n
(e,)h(the)f(command)g(pro)r(cessor)f(runs)h(all)739 4907
y(of)26 b(the)h Fo(dynamic-wind)21 b Fr(\\after")k(th)n(unks)i(b)r
(elonging)e(to)i(stopp)r(ed)f(computations)g(on)g(the)739
5006 y(discarded)h(lev)n(el\(s\).)p Black 2150 5255 a(8)p
Black eop end
%%Page: 9 17
TeXDict begin 9 16 bop 0 TeXcolorgray Black Black Black
291 523 a Fj(3.3)135 b(Logistical)47 b(commands)p Black
Black 332 705 a Fo(,load)42 b Fq(\014lename)30 b(.)13
b(.)g(.)498 805 y Fr(Loads)k(the)i(named)f(Sc)n(heme)h(source)e
(\014le\(s\).)34 b(Easier)17 b(to)h(t)n(yp)r(e)h(than)f
Fo(\(load)42 b(")p Fq(\014lename)6 b Fo("\))498 904 y
Fr(b)r(ecause)31 b(y)n(ou)g(don't)g(ha)n(v)n(e)f(to)i(shift)g(to)f(t)n
(yp)r(e)h(the)f(paren)n(theses)f(or)h(quote)g(marks.)498
1004 y(\(Ho)n(w)n(ev)n(er,)21 b(it)g(is)g(still)g(p)r(ossible)f(to)h
(sp)r(ecify)g(a)f(\014lename)h(as)f(a)h(Sc)n(heme)f(string)g(literal,)
498 1103 y(with)30 b(quote)g(marks|y)n(ou'll)d(need)j(this)g(for)f
(\014lenames)g(con)n(taining)g(whitespace.\))498 1203
y(Also,)c(it)h(w)n(orks)d(in)j(an)n(y)e(pac)n(k)-5 b(age,)24
b(unlik)n(e)h Fo(\(load)42 b(")p Fq(\014lename)6 b Fo("\))p
Fr(,)25 b(whic)n(h)g(will)g(w)n(ork)498 1303 y(only)i(in)h(pac)n(k)-5
b(ages)26 b(in)i(whic)n(h)f(the)h(v)-5 b(ariable)27 b
Fo(load)f Fr(is)h(de\014ned)h(appropriately)-7 b(.)p
Black Black 332 1461 a Fo(,exit)42 b([)p Fq(exp)5 b Fo(])498
1561 y Fr(Exits)22 b(bac)n(k)g(out)g(to)g(shell)h(\(or)e(executiv)n(e)h
(or)g(whatev)n(er)f(in)n(v)n(ok)n(ed)g(Sc)n(heme)h(48)g(in)h(the)498
1661 y(\014rst)j(place\).)37 b Fq(Exp)31 b Fr(should)c(ev)-5
b(aluate)25 b(to)i(an)f(in)n(teger.)35 b(The)27 b(in)n(teger)e(is)h
(returned)g(to)498 1760 y(the)k(calling)f(program.)40
b(The)30 b(default)f(v)-5 b(alue)30 b(of)36 b Fq(exp)e
Fr(is)c(zero,)f(whic)n(h,)h(on)f(Unix,)h(is)498 1860
y(generally)c(in)n(terpreted)h(as)g(success.)291 2131
y Fj(3.4)135 b(Mo)t(dule)44 b(commands)291 2313 y Fr(There)27
b(are)f(man)n(y)h(commands)g(related)g(to)h(mo)r(dules.)36
b(Only)28 b(the)g(most)f(commonly)g(used)291 2413 y(mo)r(dule)f
(commands)f(are)g(describ)r(ed)g(here;)h(do)r(cumen)n(tation)g(for)f
(the)i(rest)e(can)g(b)r(e)i(found)291 2513 y(in)38 b(section)p
0 0 1 TeXcolorrgb 39 w(4.8)p Black(.)69 b(There)38 b(is)g(also)g(a)g
(brief)g(description)g(of)h(mo)r(dules,)i(structures,)g(and)291
2612 y(pac)n(k)-5 b(ages)25 b(in)j(section)p 0 0 1 TeXcolorrgb
27 w(2.6)p Black 27 w(b)r(elo)n(w.)p Black Black 332
2777 a Fo(,open)42 b Fq(structur)l(e)28 b(.)13 b(.)g(.)498
2876 y Fr(Mak)n(es)29 b(the)h(bindings)g(in)g(the)g Fq(structur)l(e)6
b Fr(s)28 b(visible)i(in)g(the)g(curren)n(t)f(pac)n(k)-5
b(age.)42 b(The)498 2976 y(pac)n(k)-5 b(ages)29 b(asso)r(ciated)h(with)
i(the)f Fq(structur)l(e)6 b Fr(s)30 b(will)h(b)r(e)h(loaded)e(if)i
(this)f(has)g(not)g(al-)498 3076 y(ready)23 b(b)r(een)i(done)f(\(the)h
Fo(ask-before-loadin)o(g)18 b Fr(setting)25 b(can)f(b)r(e)h(used)f(to)g
(disable)498 3175 y(the)k(automatic)f(loading)g(of)g(pac)n(k)-5
b(ages\).)p Black Black 332 3334 a Fo(,config)41 b([)p
Fq(c)l(ommand)9 b Fo(])498 3434 y Fr(Executes)38 b Fq(c)l(ommand)48
b Fr(in)39 b(the)g Fo(config)d Fr(pac)n(k)-5 b(age,)40
b(whic)n(h)e(includes)h(the)g(mo)r(dule)498 3533 y(con\014guration)26
b(language.)35 b(F)-7 b(or)27 b(example,)h(use)p Black
Black 498 3715 a Fo(,config)41 b(,load)g Fq(\014lename)498
3896 y Fr(to)29 b(load)g(a)g(\014le)g(con)n(taining)g(mo)r(dule)g
(de\014nitions.)43 b(If)29 b(no)h Fq(c)l(ommand)38 b
Fr(is)29 b(giv)n(en,)h(the)498 3996 y Fo(config)25 b
Fr(pac)n(k)-5 b(age)26 b(b)r(ecomes)i(the)g(execution)f(pac)n(k)-5
b(age)26 b(for)h(future)h(commands.)p Black Black 332
4154 a Fo(,user)42 b([)p Fq(c)l(ommand)9 b Fo(])498 4254
y Fr(This)26 b(is)f(similar)g(to)g(the)h Fo(,config)p
Fr(.)33 b(It)26 b(mo)n(v)n(es)e(to)h(or)g(executes)g(a)g(command)g(in)h
(the)498 4354 y(user)e(pac)n(k)-5 b(age)23 b(\(whic)n(h)i(is)g(the)g
(default)g(pac)n(k)-5 b(age)24 b(when)h(the)g(Sc)n(heme)f(48)g(command)
498 4453 y(pro)r(cessor)i(starts\).)291 4725 y Fj(3.5)135
b(Debugging)45 b(commands)p Black Black 332 4907 a Fo(,preview)498
5006 y Fr(Somewhat)25 b(lik)n(e)f(a)h(bac)n(ktrace,)f(but)h(b)r(ecause)
g(of)g(tail)g(recursion)e(y)n(ou)i(see)f(less)h(than)p
Black 1702 5255 a(9)p Black eop end
%%Page: 10 18
TeXDict begin 10 17 bop 0 TeXcolorgray Black Black Black
946 523 a Fr(y)n(ou)27 b(migh)n(t)f(in)i(debuggers)d(for)h(some)h
(other)f(languages.)35 b(The)27 b(stac)n(k)e(to)i(displa)n(y)f(is)946
623 y(c)n(hosen)h(as)g(follo)n(ws:)p Black 1023 781 a(1.)p
Black 41 w(If)33 b(the)h(curren)n(t)e(fo)r(cus)h(ob)5
b(ject)32 b(is)h(a)f(con)n(tin)n(uation)g(or)g(a)h(thread,)h(then)f
(that)1129 881 y(con)n(tin)n(uation)27 b(or)f(thread's)h(stac)n(k)g(is)
h(displa)n(y)n(ed.)p Black 1023 1006 a(2.)p Black 41
w(Otherwise,)33 b(if)g(the)f(curren)n(t)g(command)g(lev)n(el)f(w)n(as)h
(initiated)h(b)r(ecause)e(of)i(a)1129 1106 y(breakp)r(oin)n(t)25
b(in)h(the)h(next)f(lev)n(el)f(do)n(wn,)h(then)h(the)f(stac)n(k)f(at)h
(that)g(breakp)r(oin)n(t)1129 1205 y(is)i(displa)n(y)n(ed.)p
Black 1023 1331 a(3.)p Black 41 w(Otherwise,)33 b(there)f(is)g(no)f
(stac)n(k)h(to)g(displa)n(y)f(and)h(a)g(message)e(is)i(prin)n(ted)g(to)
1129 1430 y(that)c(e\013ect.)946 1589 y(One)k(line)h(is)f(prin)n(ted)g
(out)h(for)f(eac)n(h)f(con)n(tin)n(uation)h(on)g(the)g(c)n(hosen)g
(stac)n(k,)g(going)946 1689 y(from)c(top)f(to)h(b)r(ottom.)p
Black Black 780 1847 a Fo(,run)42 b Fq(exp)946 1947 y
Fr(Ev)-5 b(aluate)30 b Fq(exp)5 b Fr(,)32 b(prin)n(ting)f(the)g
(result\(s\))g(and)f(making)g(them)h(\(or)g(a)f(list)h(of)g(them,)946
2046 y(if)i Fq(exp)e Fr(returns)25 b(m)n(ultiple)i(results\))e(the)h
(new)g(fo)r(cus)g(ob)5 b(ject.)36 b(The)25 b Fo(,run)g
Fr(command)946 2146 y(is)40 b(useful)h(in)f(insp)r(ection)h(mo)r(de)f
(\(see)g(section)p 0 0 1 TeXcolorrgb 40 w(3.8)p Black
39 w(b)r(elo)n(w\))g(and)g(when)h(writing)946 2246 y(command)28
b(programs)d(\(see)i(section)p 0 0 1 TeXcolorrgb 28 w(3.9)p
Black 26 w(b)r(elo)n(w\).)p Black Black 780 2404 a Fo(,trace)42
b Fq(name)50 b Fo(...)946 2504 y Fr(Start)29 b(tracing)e(calls)g(to)i
(the)f(named)g(pro)r(cedure)g(or)f(pro)r(cedures.)38
b(With)29 b(no)f(argu-)946 2603 y(men)n(ts,)23 b(displa)n(ys)e(all)g
(pro)r(cedures)g(curren)n(tly)f(traced.)34 b(This)22
b(a\013ects)f(the)h(binding)g(of)946 2703 y Fq(name)6
b Fr(,)24 b(not)f(the)g(b)r(eha)n(vior)e(of)h(the)h(pro)r(cedure)e
(that)i(is)f(its)h(curren)n(t)e(v)-5 b(alue.)35 b Fq(Name)29
b Fr(is)946 2803 y(rede\014ned)e(to)f(b)r(e)h(a)f(pro)r(cedure)g(that)h
(prin)n(ts)f(a)g(message,)f(calls)h(the)h(original)e(v)-5
b(alue)946 2902 y(of)45 b Fq(name)6 b Fr(,)40 b(prin)n(ts)e(another)f
(message,)i(and)e(\014nally)h(passes)e(along)h(the)h(v)-5
b(alue\(s\))946 3002 y(returned)28 b(b)n(y)f(the)h(original)e(pro)r
(cedure.)p Black Black 780 3160 a Fo(,untrace)41 b Fq(name)50
b Fo(...)946 3260 y Fr(Stop)30 b(tracing)f(calls)g(to)h(the)g(named)f
(pro)r(cedure)g(or)g(pro)r(cedures.)42 b(With)30 b(no)g(argu-)946
3360 y(men)n(t,)e(stop)g(tracing)e(all)i(calls)f(to)g(all)g(pro)r
(cedures.)p Black Black 780 3518 a Fo(,condition)946
3618 y Fr(The)36 b Fo(,condition)31 b Fr(command)k(displa)n(ys)g(the)h
(condition)f(ob)5 b(ject)35 b(describing)g(the)946 3717
y(error)20 b(or)i(in)n(terrupt)f(that)h(initiated)h(the)f(curren)n(t)f
(command)h(lev)n(el.)34 b(The)22 b(condition)946 3817
y(ob)5 b(ject)41 b(b)r(ecomes)f(the)g(curren)n(t)g(fo)r(cus)g(v)-5
b(alue.)76 b(This)40 b(is)g(particularly)f(useful)i(in)946
3917 y(conjunction)e(with)h(the)f(insp)r(ector.)70 b(F)-7
b(or)38 b(example,)j(if)e(a)g(pro)r(cedure)e(is)i(passed)946
4016 y(the)26 b(wrong)e(n)n(um)n(b)r(er)h(of)g(argumen)n(ts,)f(do)h
Fo(,condition)c Fr(follo)n(w)n(ed)j(b)n(y)h Fo(,inspect)c
Fr(to)946 4116 y(insp)r(ect)29 b(the)f(pro)r(cedure)e(and)i(its)f
(argumen)n(ts.)p Black Black 780 4275 a Fo(,bound?)41
b Fq(name)946 4374 y Fr(Displa)n(y)35 b(the)g(binding)g(of)42
b Fq(name)6 b Fr(,)37 b(if)e(there)g(is)g(one,)h(and)f(otherwise)f
(prin)n(ts)g(`)p Fo(Not)946 4474 y(bound)p Fr('.)p Black
Black 780 4632 a Fo(,expand)41 b Fq(form)50 b Fr(Sho)n(w)43
b(macro)e(expansion)h(of)50 b Fq(form)6 b Fr(,)48 b(if)43
b(an)n(y)-7 b(,)47 b(fully)c(expanding)g(all)946 4732
y(macros)26 b(in)i Fq(form)6 b Fr(.)p Black Black 780
4890 a Fo(,where)42 b Fq(pr)l(o)l(c)l(e)l(dur)l(e)946
4990 y Fr(Displa)n(y)28 b(name)f(of)h(\014le)f(con)n(taining)h
Fq(pr)l(o)l(c)l(e)l(dur)l(e)6 b Fr('s)28 b(source)e(co)r(de.)p
Black 2130 5255 a(10)p Black eop end
%%Page: 11 19
TeXDict begin 11 18 bop 0 TeXcolorgray Black Black Black
291 523 a Fj(3.6)135 b(Pro\014ling)45 b(commands)291
705 y Fr(After)28 b(loading)e(the)i Fo(profile-commands)21
b Fr(structure)27 b(via)p Black Black 291 845 a Fo(,load-package)38
b(profile-commands)291 986 y Fr(Sc)n(heme)22 b(48)f(pro)n(vides)g(a)h
(basic)g(pro\014ler,)h(with)g(supp)r(ort)f(for)g(\015at)g(and)g
(call-graph)f(pro\014les.)291 1085 y(In)e(addition)g(to)h(call-)e(and)h
(run)n(times)g(the)h(heap)f(memory)g(usage)f(is)h(estimated)h(as)e(w)n
(ell.)34 b(By)291 1185 y(adding)f(the)h(b)n(yte-co)r(de)g(optimizer)f
Fo(profiler-instrume)o(nt)o(ati)o(on)27 b Fr(to)34 b(the)h
(de\014nition)291 1285 y(of)27 b(a)g(structure)g(via)g(a)h(clause)p
Black Black 378 1425 a Fo(\(optimize)40 b(profiler-instru)o(men)o(ta)o
(tio)o(n\))291 1566 y Fr(in)28 b(the)h(structure)e(de\014nition,)i(co)r
(de)f(will)g(b)n(y)g(instrumen)n(ted)g(with)h(calls)e(to)h(the)h
(pro\014ler.)291 1665 y(The)34 b(call-times)f(to)h(instrumen)n(ted)h
(co)r(de)f(can)g(then)g(b)r(e)h(measured)e(exactly)-7
b(.)56 b(Without)291 1765 y(instrumen)n(tation,)26 b(the)g(pro\014ler)f
(is)g(solely)h(based)f(on)h(sampling)f(and)h(therefore)f(has)g(only)291
1864 y(limited)j(accuracy)-7 b(.)35 b(An)n(y)28 b(ev)-5
b(aluation)27 b(can)g(b)r(e)h(pro\014led)f(with)h(the)g(follo)n(wing)f
(command:)p Black Black 332 2015 a Fo(,profile)40 b Fq(c)l(ommand)498
2115 y Fr(Ev)-5 b(aluate)37 b Fq(c)l(ommand)47 b Fr(under)37
b(the)h(pro\014ler,)h(prin)n(ting)e(the)h(pro\014ling)f(result)g(and)
498 2214 y(making)27 b(the)h(return)f(v)-5 b(alue\(s\))28
b(of)34 b Fq(c)l(ommand)j Fr(the)28 b(new)g(fo)r(cus)f(ob)5
b(ject.)415 2365 y(The)27 b(output)h(of)f(the)h(pro\014ler)e(is)h
(explained)f(on)h(the)h(basis)e(of)h(the)h(follo)n(wing)e(piece)h(of)
291 2465 y(senseless)f(co)r(de:)p Black Black 291 2615
a Fo(\(define)40 b(\(c)j(x\))378 2715 y(\(if)f(\(=)h(x)g(0\))552
2814 y(0)552 2914 y(\(+)g(1)g(\(c)g(\(-)g(x)g(1\)\)\)\)\))291
3113 y(\(define)d(\(b)j(x\))378 3213 y(\(let)f(\(\(y)g(\(-)h(x)g
(1\)\)\))465 3313 y(\(if)f(\(>)h(y)g(0\))639 3412 y(\(begin)726
3512 y(\(c)g(y\))726 3611 y(\(a)g(y\))726 3711 y(\(+)g(1)g(\(a)g
(y\)\)\))639 3811 y(0\)\)\))291 4010 y(\(define)d(\(a)j(x\))378
4110 y(\(let)f(\(\(y)g(\(-)h(x)g(1\)\)\))465 4209 y(\(if)f(\(>)h(y)g
(0\))639 4309 y(\(begin)726 4408 y(\(c)g(y\))726 4508
y(\(b)g(y\))726 4608 y(\(+)g(1)g(\(b)g(y\)\)\))639 4707
y(0\)\)\))291 4907 y(\(define)d(\(main)i(x\))378 5006
y(\(+)h(1)g(\(a)f(x\)\)\))p Black 1681 5255 a Fr(11)p
Black eop end
%%Page: 12 20
TeXDict begin 12 19 bop 0 TeXcolorgray Black Black Black
863 523 a Fr(The)28 b(pro\014ler)f(pro)r(duces)f(the)i(follo)n(wing)f
(output:)p Black Black 739 722 a Fo(>)43 b(,profile)d(\(main)i(21\))739
922 y(**)h(Samples:)345 b(60)43 b(\(approx.)d(one)i(per)h(40ms\))739
1021 y(**)g(Interrupt)d(time:)h(50ms)739 1121 y(**)i(Real)f(run)g
(time:)85 b(2430ms)739 1220 y(**)43 b(Total)e(memory:)128
b(22k)739 1320 y(**)43 b(GC)f(runs:)347 b(0)739 1519
y(**)43 b(Flat)f(result)f(\(times)g(in)i(ms\):)870 1719
y(time)85 b(cumu)h(self)129 b(mem)86 b(calls)f(ms/call)f(name)782
1818 y(61.66\045)h(1498)h(1498)172 b(2k)87 b(37+51)303
b(17)86 b(c)43 b(in)g("x.scm")826 1918 y(25.0\045)85
b(2430)129 b(608)h(10k)173 b(436)347 b(6)87 b(b)43 b(in)g("x.scm")782
2017 y(13.33\045)85 b(2430)129 b(324)h(10k)173 b(442)347
b(5)87 b(a)43 b(in)g("x.scm")870 2117 y(0.0\045)85 b(2430)216
b(0)174 b(0k)261 b(1)218 b(2430)85 b(main)42 b(in)h("x.scm")739
2316 y(**)g(Tree)f(result)f(\(times)g(in)i(ms\):)739
2516 y(i)174 b(time)42 b(self)g(child)85 b(mem)173 b(calls)85
b(name)739 2615 y(0)i(100.0\045)172 b(0)86 b(2430)129
b(0k)348 b(0)87 b(<profiler>)39 b([0])1306 2715 y(0)86
b(2430)129 b(0k)261 b(1/1)217 b(main)42 b(in)g("x.scm")f([1])739
2814 y(================)o(==)o(===)o(==)o(===)o(==)o(==)o(===)o(==)o
(===)o(==)o(===)o(==)o(==)o(===)o(==)o(===)o(==)1916
2914 y(441/442)215 b(b)43 b(in)g("x.scm")d(<cycle)h(0>)i([3])1218
3014 y(324)130 b(891)86 b(10k)173 b(1/442)216 b(main)42
b(in)g("x.scm")f([1])739 3113 y(1)87 b(100.0\045)d(324)130
b(891)86 b(10k)260 b(442)86 b(a)43 b(in)g("x.scm")e(<cycle)g(0>)h([2])
1218 3213 y(891)217 b(0)130 b(1k)174 b(22/37)216 b(c)43
b(in)g("x.scm")d([4])1916 3313 y(436/436)215 b(b)43 b(in)g("x.scm")d
(<cycle)h(0>)i([3])739 3412 y(================)o(==)o(===)o(==)o(===)o
(==)o(==)o(===)o(==)o(===)o(==)o(===)o(==)o(==)o(===)o(==)o(===)o(==)
1916 3512 y(436/436)215 b(a)43 b(in)g("x.scm")d(<cycle)h(0>)i([2])739
3611 y(2)87 b(100.0\045)d(608)130 b(608)86 b(10k)260
b(436)86 b(b)43 b(in)g("x.scm")e(<cycle)g(0>)h([3])1218
3711 y(608)217 b(0)130 b(1k)174 b(15/37)216 b(c)43 b(in)g("x.scm")d
([4])1916 3811 y(441/442)215 b(a)43 b(in)g("x.scm")d(<cycle)h(0>)i([2])
739 3910 y(================)o(==)o(===)o(==)o(===)o(==)o(==)o(===)o(==)
o(===)o(==)o(===)o(==)o(==)o(===)o(==)o(===)o(==)1306
4010 y(0)86 b(2430)129 b(0k)261 b(1/1)217 b(<profiler>)39
b([0])739 4110 y(3)87 b(100.0\045)172 b(0)86 b(2430)129
b(0k)348 b(1)87 b(main)42 b(in)h("x.scm")d([1])1218 4209
y(324)130 b(891)86 b(10k)173 b(1/442)216 b(a)43 b(in)g("x.scm")d
(<cycle)h(0>)i([2])739 4309 y(================)o(==)o(===)o(==)o(===)o
(==)o(==)o(===)o(==)o(===)o(==)o(===)o(==)o(==)o(===)o(==)o(===)o(==)
1218 4408 y(608)217 b(0)130 b(1k)174 b(15/37)216 b(b)43
b(in)g("x.scm")d(<cycle)h(0>)i([3])1218 4508 y(891)217
b(0)130 b(1k)174 b(22/37)216 b(a)43 b(in)g("x.scm")d(<cycle)h(0>)i([2])
739 4608 y(4)87 b(61.66\045)41 b(1498)216 b(0)130 b(2k)174
b(37+51)85 b(c)43 b(in)g("x.scm")e([4])739 4707 y(================)o
(==)o(===)o(==)o(===)o(==)o(==)o(===)o(==)o(===)o(==)o(===)o(==)o(==)o
(===)o(==)o(===)o(==)1218 4807 y(932)86 b(1498)g(20k)260
b(1/1)217 b(main)42 b(in)g("x.scm")f([1])739 4907 y(0)87
b(100.0\045)d(932)i(1498)g(20k)173 b(1+877)85 b(<cycle)41
b(0)i(as)g(a)g(whole>)1218 5006 y(324)130 b(891)86 b(10k)260
b(441)217 b(a)43 b(in)g("x.scm")d(<cycle)h(0>)i([2])p
Black 2130 5255 a Fr(12)p Black eop end
%%Page: 13 21
TeXDict begin 13 20 bop 0 TeXcolorgray Black Black Black
770 523 a Fo(608)130 b(608)85 b(10k)261 b(436)216 b(b)44
b(in)e("x.scm")f(<cycle)g(0>)i([3])857 623 y(0)218 b(0)130
b(2k)174 b(37/37)215 b(c)44 b(in)e("x.scm")f([4])415
920 y Fr(The)28 b(formatting)f(of)g(the)h(output)g(is)g(based)f(on)g
(the)h(output)g(of)g(GNU)g(gprof)p 0 0 1 TeXcolorrgb
2880 890 a Fk(1)p Black 2917 920 a Fr(.)415 1024 y(First,)g(general)e
(information)h(ab)r(out)g(the)h(pro\014ling)f(is)g(sho)n(wn:)p
Black 415 1201 a Fn(\017)p Black 41 w Fo(samples)p Fr(:)48
b(total)34 b(n)n(um)n(b)r(er)h(of)f(samples)g(tak)n(en)g(and)g(the)h(a)
n(v)n(erage)d(time)j(b)r(et)n(w)n(een)498 1301 y(t)n(w)n(o)27
b(samples)p Black 415 1483 a Fn(\017)p Black 41 w Fo(interrupt)40
b(time)p Fr(:)i(theoretical)30 b(in)n(terrupt)g(time,)i(the)g(time)f(b)
r(et)n(w)n(een)g(t)n(w)n(o)f(sam-)498 1582 y(ples)p Black
415 1764 a Fn(\017)p Black 41 w Fo(real)42 b(run)g(time)p
Fr(:)33 b(the)22 b(total)f(run)h(time)g(of)g(the)g(ev)-5
b(aluation,)22 b(simple)g(measuremen)n(t)498 1863 y(from)27
b(the)h(b)r(eginning)g(to)f(the)h(end)g(of)g(the)g(ev)-5
b(aluation)p Black 415 2045 a Fn(\017)p Black 41 w Fo(total)42
b(memory)p Fr(:)j(the)33 b(total)f(amoun)n(t)h(of)g(memory)f(used)g(b)n
(y)h(the)g(program,)f(here)498 2144 y(in)c(kilob)n(ytes)p
Black 415 2326 a Fn(\017)p Black 41 w Fo(GC)43 b(runs)p
Fr(:)51 b(the)36 b(n)n(um)n(b)r(er)f(of)h(times)g(the)g(garbage)d
(collector)h(w)n(as)h(running)g(while)498 2426 y(ev)-5
b(aluating)415 2603 y(The)28 b(\015at)f(pro\014le)g(giv)n(es)g(o)n(v)n
(erall)e(statistics)i(for)g(eac)n(h)g(pro)r(cedure)g(in)h(the)g
(program:)p Black 415 2781 a Fn(\017)p Black 41 w Fo(time)p
Fr(:)56 b(p)r(ercen)n(tage)37 b(of)g(time)i(the)f(pro)r(cedure)f(has)g
(in)h(the)h(program)d(\(based)h(on)498 2880 y(\\)p Fo(self)p
Fr("\))p Black 415 3062 a Fn(\017)p Black 41 w Fo(cumu)p
Fr(:)e(total)28 b(cum)n(ulativ)n(e)f(time)h(the)g(pro)r(cedure)e(w)n
(as)h(running)p Black 415 3243 a Fn(\017)p Black 41 w
Fo(self)p Fr(:)35 b(total)28 b(time)g(the)g(pro)r(cedure)e(w)n(as)h
(running)g(itself)h(\(without)h(c)n(hildren\))p Black
415 3425 a Fn(\017)p Black 41 w Fo(mem)p Fr(:)36 b(appro)n(ximated)26
b(memory)h(usage)f(of)i(the)g(pro)r(cedure)p Black 415
3606 a Fn(\017)p Black 41 w Fo(calls)p Fr(:)58 b(the)39
b(n)n(um)n(b)r(er)g(of)f(non-recursiv)n(e)f(calls)h(to)h(the)g(pro)r
(cedure.)70 b(Recursiv)n(e)498 3706 y(calls)35 b(are)f(displa)n(y)n(ed)
g(after)h(an)g(optionally)f(app)r(ended)i("+")e(to)h(former)f(n)n(um)n
(b)r(er)498 3806 y(\(see)28 b(pro)r(cedure)e Fo(c)h Fr(in)h(example)g
(output)g(ab)r(o)n(v)n(e\).)p Black 415 3987 a Fn(\017)p
Black 41 w Fo(ms/call)p Fr(:)56 b(estimate)39 b(of)f(the)h(time)g(p)r
(er)f(call)h(\(with)g(c)n(hildren\),)i(based)d(on)g(non-)498
4087 y(recursiv)n(e)26 b(calls)h(and)g(\\)p Fo(cumu)p
Fr(".)p Black 415 4268 a Fn(\017)p Black 41 w Fo(name)p
Fr(:)35 b(the)28 b(name)g(of)f(the)h(pro)r(cedure)f(and)g(the)h(\014le)
g(it)g(is)g(de\014ned)g(in)415 4446 y(The)34 b(tree)f(result)g(displa)n
(ys)f(pro\014ling)h(information)g(dep)r(ending)g(on)h(the)f(caller)g
(of)g(a)291 4546 y(particular)27 b(pro)r(cedure.)38 b(As)29
b(in)f(gprof)g(output,)h(for)f(eac)n(h)g(pro)r(cedure)f(there)i(is)f
(an)g Fq(entry)p Fr(.)291 4645 y(En)n(tries)d(are)h(separated)f(b)n(y)i
(lines)f(of)33 b Fo(=)p Fr(s.)j(Eac)n(h)26 b(en)n(try)g(displa)n(ys)f
(the)i(callers)f(\(inden)n(ted\),)291 4745 y(the)32 b(pro)r(cedure)g
(itself)g(and)g(the)h(pro)r(cedure)e(called)h(\(inden)n(ted\).)52
b(The)33 b(meaning)e(of)i(the)291 4844 y(\014elds)27
b(dep)r(ends)h(on)g(the)g(t)n(yp)r(e)f(of)h(the)g(en)n(try)-7
b(,)27 b(for)g(example:)p Black 291 4929 1146 4 v 383
4983 a Fg(1)p 0 TeXcolorgray Black 418 5006 a Ff(part)d(of)f(the)h(GNU)
g(Binary)f(Utilities:)31 b(h)n(ttp://www.gn)n(u.org/soft)n(w)n(are/bin)
n(utils/)p Black Black 1681 5255 a Fr(13)p Black eop
end
%%Page: 14 22
TeXDict begin 14 21 bop 0 TeXcolorgray Black Black Black
Black Black 782 523 a Fo(i)174 b(time)42 b(self)86 b(child)f(mem)173
b(calls)129 b(name)1262 623 y(324)173 b(891)86 b(10k)173
b(1/442)260 b(main)41 b([1])782 722 y(1)87 b(100.0\045)e(324)173
b(891)86 b(10k)260 b(442)130 b(a)43 b(<cycle)e(0>)i([2])1262
822 y(891)260 b(0)131 b(1k)173 b(22/37)260 b(c)43 b([4])863
1014 y Fr(Ev)n(ery)c(pro)r(cedure)f(has)i(a)f(unique)h(index)g(n)n(um)n
(b)r(er)f Fo(i)h Fr(\(here)f(\\1"\),)j(based)d(on)h(the)739
1114 y(p)r(osition)34 b(in)g(the)g(call-graph.)54 b(It)35
b(is)f(used)g(to)f(quic)n(kly)h(\014nd)g(the)h(corresp)r(onding)d(en)n
(try)-7 b(.)739 1213 y(The)27 b(n)n(um)n(b)r(er)f(is)h(app)r(ended)g
(to)g(the)g(pro)r(cedure)f(name)h(\(in)g(brac)n(k)n(ets\).)35
b(The)27 b(meaning)f(of)739 1313 y(the)i(\\cycle")e(su\016x)i(is)f
(explained)g(b)r(elo)n(w.)863 1415 y(Callers)g(\(here)g
Fo(main)p Fr(\):)p Black 863 1588 a Fn(\017)p Black 41
w Fo(self)p Fr(:)36 b(time)28 b(sp)r(en)n(t)g(directly)f(in)h
Fo(a)f Fr(when)h(called)f(b)n(y)i Fo(main)p Black 863
1763 a Fn(\017)p Black 41 w Fo(child)p Fr(:)35 b(time)28
b(sp)r(en)n(t)g(in)g(c)n(hildren)f(of)34 b Fo(a)28 b
Fr(when)f(called)h(b)n(y)g Fo(main)p Black 863 1939 a
Fn(\017)p Black 41 w Fo(mem)p Fr(:)36 b(memory)27 b(usage)f(of)34
b Fo(a)28 b Fr(when)f(called)h(b)n(y)g Fo(main)p Black
863 2114 a Fn(\017)p Black 41 w Fo(calls)p Fr(:)34 b(t)n(w)n(o)25
b(n)n(um)n(b)r(ers:)35 b(n)n(um)n(b)r(er)25 b(of)g(calls)g(to)g
Fo(a)g Fr(from)g Fo(main)f Fr(and)h(total)g(n)n(um)n(b)r(er)g(of)946
2214 y(non-recursiv)n(e)h(calls)h(to)g Fo(a)863 2387
y Fr(Primary)f(line)i(\(here)f Fo(a)p Fr(\):)p Black
863 2560 a Fn(\017)p Black 41 w Fo(time)p Fr(:)36 b(total)27
b(p)r(ercen)n(tage)f(of)i(time)g Fo(a)f Fr(w)n(as)g(running)p
Black 863 2735 a Fn(\017)p Black 41 w Fo(self)p Fr(:)36
b(total)27 b(time)h(sp)r(en)n(t)g(directly)f(in)h Fo(a)p
Black 863 2910 a Fn(\017)p Black 41 w Fo(child)p Fr(:)35
b(total)28 b(time)g(sp)r(en)n(t)g(in)f(c)n(hildren)h(of)34
b Fo(a)p Black 863 3086 a Fn(\017)p Black 41 w Fo(mem)p
Fr(:)i(total)28 b(memory)e(usage)h(of)34 b Fo(a)p Black
863 3261 a Fn(\017)p Black 41 w Fo(calls)p Fr(:)45 b(the)34
b(total)e(n)n(um)n(b)r(er)g(of)h(non-recursiv)n(e)d(calls)i(to)h
Fo(a)p Fr(.)52 b(Recursiv)n(e)31 b(calls)h(are)946 3361
y(displa)n(y)n(ed)27 b(after)g(an)h(optional)e Fo(+)p
Fr(.)863 3534 y(Called)i(\(here)f Fo(c)p Fr(\):)p Black
863 3707 a Fn(\017)p Black 41 w Fo(self)p Fr(:)36 b(time)28
b(sp)r(en)n(t)g(directly)f(in)h Fo(c)f Fr(when)h(called)f(b)n(y)i
Fo(a)p Black 863 3882 a Fn(\017)p Black 41 w Fo(child)p
Fr(:)35 b(time)28 b(sp)r(en)n(t)g(in)g(c)n(hildren)f(of)34
b Fo(c)28 b Fr(when)f(called)h(b)n(y)g Fo(a)p Black 863
4058 a Fn(\017)p Black 41 w Fo(mem)p Fr(:)36 b(memory)27
b(usage)f(of)34 b Fo(c)28 b Fr(when)f(called)h(b)n(y)g
Fo(a)p Black 863 4233 a Fn(\017)p Black 41 w Fo(calls)p
Fr(:)49 b(t)n(w)n(o)34 b(n)n(um)n(b)r(ers:)50 b(n)n(um)n(b)r(er)34
b(of)h(calls)f(to)g Fo(c)g Fr(from)g Fo(a)g Fr(and)h(total)f(n)n(um)n
(b)r(er)g(of)946 4333 y(non-recursiv)n(e)26 b(calls)h(to)g
Fo(c)863 4506 y Fr(A)34 b(sp)r(ecial)f(treatmen)n(t)h(is)f(needed)h
(for)f(m)n(utual-recursiv)n(e)e(pro)r(cedures.)53 b(In)34
b(the)g(ex-)739 4605 y(ample,)f Fo(a)g Fr(calls)e Fo(b)h
Fr(and)h Fo(b)f Fr(calls)f Fo(a)p Fr(.)52 b(This)32 b(is)g(called)g(a)g
Fq(cycle)p Fr(.)53 b(If)39 b Fo(a)32 b Fr(w)n(ould)g(call)g(another)739
4705 y(pro)r(cedure)26 b Fo(d)i Fr(and)f Fo(d)g Fr(w)n(ould)h(call)f
Fo(a)p Fr(,)g(all)g(three)h(pro)r(cedures)e(form)h(a)h(cycle.)863
4807 y(Cycles)34 b(ha)n(v)n(e)e(a)h(separate)f(en)n(try)i(in)f(the)i
(call)e(graph.)54 b(This)33 b(en)n(try)g(consists)g(of)h(the)739
4907 y(callers)29 b(in)n(to)i(the)g(cycle,)g(the)g(primary)f(line)g(of)
h(the)g(cycle,)g(the)g(mem)n(b)r(er)g(pro)r(cedures)e(of)739
5006 y(the)f(cycle)f(and)h(the)g(external)e(pro)r(cedures)h(called)g(b)
n(y)g(the)h(cycle:)p Black 2130 5255 a(14)p Black eop
end
%%Page: 15 23
TeXDict begin 15 22 bop 0 TeXcolorgray Black Black Black
Black Black 814 523 a Fo(932)129 b(1498)86 b(20k)260
b(1/1)g(main)42 b([1])334 623 y(0)87 b(100.0\045)e(932)129
b(1498)86 b(20k)173 b(1+877)128 b(<cycle)42 b(0)h(as)f(a)i(whole>)814
722 y(324)173 b(891)86 b(10k)260 b(441)g(a)43 b(<cycle)e(0>)i([2])814
822 y(608)173 b(608)86 b(10k)260 b(436)g(b)43 b(<cycle)e(0>)i([3])901
922 y(0)261 b(0)130 b(2k)174 b(37/37)259 b(c)43 b([4])415
1107 y Fr(Callers)27 b(\(here)g Fo(main)p Fr(\):)p Black
415 1276 a Fn(\017)p Black 41 w Fr(the)g(meaning)g(of)g(the)g(\014elds)
g(are)f(the)h(same)g(as)f(ab)r(o)n(v)n(e.)35 b(The)27
b(mem)n(b)r(er)g(pro)r(cedures)498 1376 y(of)h(the)g(cycle)f(are)g
(seen)g(as)g(a)g(whole.)415 1544 y(Primary)f(line:)p
Black 415 1713 a Fn(\017)p Black 41 w Fo(time)p Fr(:)35
b(total)28 b(p)r(ercen)n(tage)e(of)i(time)g(an)n(y)f(pro)r(cedure)f(of)
i(the)g(cycle)f(w)n(as)g(running)p Black 415 1882 a Fn(\017)p
Black 41 w Fo(self)p Fr(:)35 b(total)28 b(time)g(sp)r(en)n(t)g
(directly)f(in)h(a)f(pro)r(cedure)g(of)g(the)h(cycle)p
Black 415 2051 a Fn(\017)p Black 41 w Fo(child)p Fr(:)35
b(total)27 b(time)h(sp)r(en)n(t)g(in)g(external)f(c)n(hildren)g(of)34
b Fo(a)p Black 415 2220 a Fn(\017)p Black 41 w Fo(mem)p
Fr(:)i(sum)28 b(of)f(memory)g(usage)f(of)i(all)f(cycle)g(mem)n(b)r(er)h
(pro)r(cedures)p Black 415 2390 a Fn(\017)p Black 41
w Fo(calls)p Fr(:)61 b(the)41 b(total)g(n)n(um)n(b)r(er)f(of)h
(external)e(calls)h(to)h(the)g Fo(cycle)e Fr(and)h(the)h(total)498
2489 y(n)n(um)n(b)r(er)27 b(of)h(calls)f(in)h(the)g(cycle)f(in)n
(ternally)415 2658 y(Mem)n(b)r(er)h(pro)r(cedures:)p
Black 415 2826 a Fn(\017)p Black 41 w Fr(the)g(meaning)f(of)h(the)g
(\014elds)f(are)g(the)h(same)f(as)g(ab)r(o)n(v)n(e,)f(except.)14
b(.)g(.)p Black 415 2996 a Fn(\017)p Black 41 w Fo(calls)p
Fr(:)32 b(the)22 b(n)n(um)n(b)r(er)f(of)h(calls)f(to)g(the)h(mem)n(b)r
(er)f(pro)r(cedure)g(from)g(within)h(the)g(cycle)415
3164 y(External)27 b(pro)r(cedures)f(\(here)h Fo(c)p
Fr(\):)p Black 415 3333 a Fn(\017)p Black 41 w Fr(the)34
b(meaning)g(of)g(the)g(\014elds)g(are)f(the)h(same)f(as)h(with)g(the)g
(mem)n(b)r(er)g(pro)r(cedures,)498 3432 y(except.)14
b(.)g(.)p Black 415 3602 a Fn(\017)p Black 41 w Fo(calls)p
Fr(:)39 b(the)30 b(n)n(um)n(b)r(er)f(of)g(calls)g(to)h(the)g(external)e
(pro)r(cedure)h(from)g(the)h(cycle)f(and)498 3701 y(the)f(total)f(n)n
(um)n(b)r(er)h(of)f(non-recursiv)n(e)f(calls)h(to)g(the)h(external)f
(pro)r(cedure)415 3870 y(In)33 b(the)f(curren)n(t)g(implemen)n(tation,)
h(there)f(are)g(some)f(issues)h(that)g(need)h(to)f(b)r(e)h(con-)291
3969 y(sidered:)44 b(in)31 b(the)h(default)g(con\014guration,)f
(samples)f(are)h(tak)n(en)g(ev)n(ery)f(50)g(milliseconds.)291
4069 y(Pro)r(cedures)i(with)i(a)g(b)n(y-call)f(run)h(time)g(shorter)f
(than)h(the)g(in)n(terrupt)g(time)g(are)f(lik)n(ely)291
4169 y(to)k(b)r(e)h(pro\014led)e(inaccurately)g(or)h(ma)n(y)g(not)g(b)r
(e)h(seen)f(at)g(all,)j(if)d(they)h(ha)n(v)n(e)e(not)h(b)r(een)291
4268 y(instrumen)n(ted.)415 4369 y(The)30 b(default)g(in)n(terrupt)f
(time)h(can)g(b)r(e)g(set)f(with)h(the)g Fo(profiler-interrup)o(t-)o
(tim)o(e)291 4468 y Fr(command)d(pro)r(cessor)e(setting,)j(see)p
0 0 1 TeXcolorrgb 27 w(3.7)p Black(.)36 b(F)-7 b(or)27
b(example,)p Black Black 291 4638 a Fo(,set)42 b(profiler-interr)o(up)o
(t-t)o(im)o(e)c(200)291 4806 y Fr(sets)27 b(the)h(default)g(pro\014ler)
e(sampling)h(in)n(terrupt)h(time)g(to)f(200ms.)415 4907
y(Because)e(the)i(in)n(terrupt)e(is)h(shared)f(with)i(the)f(thread)g
(system,)g(pro\014ling)f(ma)n(y)h(cause)291 5006 y(p)r(erformance)33
b(issues)i(with)g(m)n(ulti-threaded)f(programs.)57 b(Also,)36
b(programs)c(with)k(deep)p Black 1681 5255 a(15)p Black
eop end
%%Page: 16 24
TeXDict begin 16 23 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(recursion)30 b(\(resulting)h(in)h(large)e(con)n(tin)n
(uations\))g(can)i(cause)e(the)i(pro\014ler)e(to)i(use)f(a)g(sig-)739
623 y(ni\014can)n(t)c(p)r(ercen)n(tage)g(of)g(the)h(total)g(run)f
(time.)863 722 y(By)34 b(default,)j(call)d(times)g(are)f(measured)h(b)n
(y)g(the)g(sampling)g(pro)r(cess.)56 b(When)34 b(co)r(de)739
822 y(had)24 b(b)r(een)g(instrumen)n(ted,)h(call)e(times)h(of)g(those)g
(pro)r(cedures)e(will)i(b)r(e)h(measured)e(exactly)-7
b(.)739 922 y(When)22 b(only)f(instrumen)n(ted)h(co)r(de)g(should)f(b)r
(e)h(considered)f(in)h(the)g(output)g(of)f(the)h(pro\014ler,)739
1021 y(the)f(command)f(pro)r(cessor)f(setting)j Fo(profiler-measure)o
(-n)o(oni)o(ns)o(tr)14 b Fr(can)21 b(b)r(e)g(set)g(to)f
Fo(off)p Fr(.)863 1121 y(Sc)n(heme)26 b(48)f(optimizes)g(tail)h(calls.)
36 b(Th)n(us,)26 b(the)g(pro\014ler)e(cannot)h(\\see")g(tail)g(calls)g
(and)739 1220 y(in)f(some)g(situations,)g(the)h(output)g(of)f(the)g
(pro\014ler)f(ma)n(y)h(sho)n(w)f(that)i(pro)r(cedures)d(directly)739
1320 y(call)27 b(their)h(\\grandc)n(hildren".)739 1549
y Fe(3.6.1)112 b(Ho)m(w)37 b(the)h(pro\014ler)f(w)m(orks)739
1702 y Fr(The)c(pro\014ler)g(is)g(based)g(on)g(taking)g(samples)g(of)g
(the)h(curren)n(t)e(stac)n(k)h(of)g(con)n(tin)n(uations,)739
1802 y(the)f Fq(c)l(al)t(l-stack)p Fr(.)49 b(Therefore)30
b(it)i(sc)n(hedules)f(the)h(alarm)e(in)n(terrupt)h(at)g(a)g(regular)f
(in)n(terv)-5 b(al)739 1901 y(sp)r(eci\014ed)36 b(b)n(y)f(the)h
Fo(profiler-interru)o(pt)o(-t)o(ime)29 b Fr(command)35
b(pro)r(cessor)e(setting.)61 b(Be-)739 2001 y(cause)27
b(the)h(thread)g(system)g(uses)f(the)i(alarm)d(in)n(terrupt)i(as)f(w)n
(ell,)h(the)h(pro\014ler)e(in)n(terrupt)739 2101 y(handler)g(calls)g
(the)h(handler)f(of)g(the)h(thread)g(system)f(after)g(pro)r(cessing)f
(the)i(sample.)863 2200 y(The)37 b(pro\014ler)e(in)n(terrupt)h(handler)
g(\014rst)h(captures)e(the)i(curren)n(t)f(con)n(tin)n(uation)f(and)739
2300 y(follo)n(ws)27 b(the)i(con)n(tin)n(uation-stac)n(k)e(do)n(wn)h
(to)g(the)h(con)n(tin)n(uation)f(of)h(the)g Fo(profile-thunk)739
2399 y Fr(pro)r(cedure,)j(whic)n(h)h(called)f(the)g(th)n(unk)h(to)f(b)r
(e)h(pro\014led.)50 b(Eac)n(h)32 b(con)n(tin)n(uation)f(with)i(the)739
2499 y(corresp)r(onding)26 b(co)r(de)h(template)h(is)f(stored)g(in)h(a)
f(stac)n(k)g(of)34 b Fo(stackentry)23 b Fr(records.)863
2599 y(This)h Fo(*cur-stack*)c Fr(is)k(compared)f(from)h(b)r(ottom)g
(to)g(top)g(with)h(the)f Fo(*last-stack*)p Fr(,)739 2698
y(the)30 b(stac)n(k)g(captured)f(while)i(the)f(prior)f(sampling)h(in)n
(terrupt.)44 b(The)30 b(statistics)g(gathered)739 2798
y(are)c(stored)h(in)h Fo(profinfo)c Fr(records.)863 2898
y(F)-7 b(or)31 b(eac)n(h)g(stac)n(k-en)n(try)e(in)j(the)g
Fo(*cur-stack*)p Fr(,)c(sev)n(eral)i(p)r(ossibilities)h(exist)g(in)h
(con-)739 2997 y(junction)c(to)g(the)g(en)n(try)f(at)g(the)h(same)f
(depth)h(in)g(the)g Fo(*last-stack*)p Fr(:)p Black 863
3147 a Fn(\017)p Black 41 w Fr(there)g(is)f(no)h(suc)n(h)f(en)n(try:)36
b(the)28 b(con)n(tin)n(uation)f(m)n(ust)h(b)r(e)g(the)g(result)f(of)g
(a)h(new)f(call)p Black 863 3304 a Fn(\017)p Black 41
w Fr(b)r(oth)33 b(en)n(tries)e(are)g(the)h(same)g(con)n(tin)n(uation:)
44 b(nothing)32 b(c)n(hanged,)g(the)g(pro)r(cedure)946
3404 y(is)c(still)g(running)p Black 863 3562 a Fn(\017)p
Black 41 w Fr(en)n(tries)22 b(are)f(not)h(the)h(same)e(con)n(tin)n
(uation:)34 b(the)22 b(follo)n(wing)f(en)n(tries)h(up)g(in)h(the)f
(stac)n(k)946 3661 y(m)n(ust)30 b(ha)n(v)n(e)e(c)n(hanged.)41
b(If)30 b(the)g(templates)f(of)h(the)f(curren)n(t)g(en)n(tries)g(are)f
(the)i(same,)946 3761 y(the)38 b(con)n(tin)n(uation)f(coun)n(ts)g(as)f
(the)i(still)g(same)f(call)g(to)g(the)h(pro)r(cedure)e(\(but)i(at)946
3861 y(another)f(expression)f(in)i(the)g(pro)r(cedure\).)67
b(A)38 b(suc)n(h)f(situation)h(only)f(coun)n(ts)g(as)946
3960 y(a)d(new)h(call)f(if)g(the)h(con)n(tin)n(uation)f(ob)5
b(ject)34 b(has)f(c)n(hanged,)j(but)e(the)h(con)n(tin)n(uation)946
4060 y(program-coun)n(ter,)25 b(argumen)n(ts)h(and)h(the)h(template)g
(sta)n(y)n(ed)f(the)h(same.)739 4209 y(As)39 b(w)n(e)g(ascend)g(in)h
(the)g(call-stac)n(k,)g(c)n(hanges)e(in)i(the)g(lo)n(w)n(er)e(lev)n
(els)g(indicate)i(that)g(all)739 4309 y(en)n(tries)30
b(ab)r(o)n(v)n(e)g(ha)n(v)n(e)g(to)i(b)r(e)f(new)h(calls.)47
b(This)31 b(w)n(a)n(y)-7 b(,)31 b(the)h(pro\014ler)e(gathers)g
(information)739 4408 y(ab)r(out)d(ho)n(w)g(often)h(a)f(template)h(is)g
(called)f(b)n(y)g(another)g(template.)863 4508 y(Additionally)-7
b(,)26 b(ev)n(ery)d(time)j(a)e(pro)r(cedure)g(is)g(seen,)h(w)n(e)g
(record)e(this)i(\\o)r(ccurrence".)34 b(If)739 4608 y(the)29
b(pro)r(cedure)e(is)h(a)g(the)g(top)h(of)f(the)h(stac)n(k,)e(it)i(is)f
(curren)n(tly)f(running.)39 b(Based)27 b(on)h(these)739
4707 y(n)n(um)n(b)r(ers,)i(the)h(a)n(v)n(erage)d(in)n(terrupt)i(time)h
(and)f(the)h(n)n(um)n(b)r(er)f(of)g(calls,)g(w)n(e)g(can)g(estimate)739
4807 y(the)e(self)g(and)f(c)n(hild)h(times.)863 4907
y(While)22 b(running,)g(the)g(pro\014ler)e(collects)h(information)f(ab)
r(out)h(heap)g(memory)g(usage)f(as)739 5006 y(w)n(ell.)36
b(After)28 b(comparing)e(the)h(curren)n(t)f(with)i(the)g(last)e(stac)n
(k,)h(the)g(pro\014ler)f(kno)n(ws)g(whic)n(h)p Black
2130 5255 a(16)p Black eop end
%%Page: 17 25
TeXDict begin 17 24 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(pro)r(cedures)28 b(\014nished,)i(whic)n(h)f(pro)r(cedures)
f(are)g(new)i(and)f(whic)n(h)g(pro)r(cedure)g(called)g(the)291
623 y(new)j(pro)r(cedures.)52 b(This)33 b(information)f(is)g(used)h(to)
g(distribute)g(the)g(di\013erence)g(in)g(heap)291 722
y(memory)26 b(usage)h(b)r(et)n(w)n(een)g(the)h(prior)e(and)i(the)f
(curren)n(t)g(sample.)37 b(The)27 b(pro\014ler)f(uses)i(the)291
822 y Fo(memory-status)i Fr(primitiv)n(e)35 b(for)g(retrieving)f(a)n(v)
-5 b(ailable)34 b(heap)h(space)g(and)g(the)h(n)n(um)n(b)r(er)291
922 y(of)29 b(garbage)e(collector)i(runs)g(\()p Fo(gc-count)p
Fr(\).)40 b(Di\013erence)30 b(in)g(used)f(memory)g(b)r(et)n(w)n(een)h
(t)n(w)n(o)291 1021 y(samples)d(is)g(distributed)h(b)n(y)f(the)h(follo)
n(wing)f(principles:)p Black 415 1202 a Fn(\017)p Black
41 w Fr(if)35 b Fo(gc-count)24 b Fr(increased,)j(distribution)g(cannot)
g(b)r(e)h(done)p Black 415 1387 a Fn(\017)p Black 41
w Fr(if)33 b(the)h(same)e(con)n(tin)n(uation)g(is)g(still)i(at)e(top,)i
(credit)f(its)g(template)g(with)g(all)g(used)498 1487
y(memory)27 b(b)r(et)n(w)n(een)g(the)h(t)n(w)n(o)f(samplings)p
Black 415 1672 a Fn(\017)p Black 41 w Fr(if)d(there)f(are)f(stac)n(k)n
(en)n(try-templates)f(gone)i(or)f(new,)i(distribute)g(the)f(used)h
(memory)498 1772 y Fq(e)l(qual)t(ly)29 b Fr(b)r(et)n(w)n(een)e(them:)p
Black 592 1957 a Fm({)p Black 41 w Fr(gone)f(templates)i(could)g(ha)n
(v)n(e)e(used)i(some)f(memory)f(b)r(efore)i(\\returning")p
Black 592 2099 a Fm({)p Black 41 w Fr(new)f(templates)h(could)g(ha)n(v)
n(e)e(used)h(some)g(memory)g(while)h(running)p Black
592 2242 a Fm({)p Black 41 w Fr(the)k(caller)f(of)g(new)h(templates)g
(could)g(ha)n(v)n(e)e(used)i(some)f(memory)g(b)r(et)n(w)n(een)681
2341 y(the)d(calling)f(of)g(gone)g(and)g(new)h(pro)r(cedures)415
2527 y(The)42 b(b)n(yte-co)r(de)g(optimizer)g Fo(profiler-instrum)o
(ent)o(at)o(ion)36 b Fr(adds)41 b(a)h(call)g(to)h(the)291
2626 y(\\pro\014le-coun)n(t")32 b(pro)r(cedure)h(of)i(the)g(pro\014ler)
e(structure.)57 b(This)35 b(pro)r(cedure)e(is)i(resp)r(on-)291
2726 y(sible)27 b(for)g(the)h(exact)f(call-times)g(measuremen)n(t.)415
2830 y(After)21 b(collection)e(of)h(the)h(data,)g(pro)r(cedures)e(are)g
(n)n(um)n(b)r(ered)h(and)g(cycles)f(are)g(detected)291
2930 y(b)n(y)33 b(ascending)f(in)i(the)g(call)f(tree.)54
b(Time)34 b(is)f(b)r(eing)h(propagated)e(from)h(top)g(to)h(b)r(ottom,)
291 3030 y(remem)n(b)r(ering)23 b(self)i(and)f(c)n(hild)g(times.)36
b(Most)24 b(of)h(the)g(time,)g(cycles)f(are)f(b)r(eing)i(considered)291
3129 y(as)i(one)g(pro)r(cedure.)291 3429 y Fj(3.7)135
b(Settings)291 3620 y Fr(There)27 b(are)h(a)g(n)n(um)n(b)r(er)g(of)g
(settings)g(that)h(con)n(trol)d(the)j(b)r(eha)n(vior)e(of)h(the)h
(command)f(pro-)291 3720 y(cessor;)d(most)h(of)g(them)h(are)e(b)r(o)r
(oleans.)36 b(They)26 b(can)g(b)r(e)h(set)f(using)g(the)g
Fo(,set)f Fr(and)h Fo(,unset)291 3819 y Fr(commands.)p
Black Black 332 4021 a Fo(,set)42 b Fq(setting)51 b Fo([on)42
b(|)h(off)f(|)i(literal)c(|)j(?])498 4121 y Fr(This)32
b(sets)h(the)f(v)-5 b(alue)33 b(of)f(setting)h Fq(setting)7
b Fr(.)52 b(F)-7 b(or)31 b(a)h(b)r(o)r(olean)g(setting,)i(the)f(second)
498 4221 y(argumen)n(t)26 b(m)n(ust)h(b)r(e)g Fo(on)f
Fr(or)g Fo(off)p Fr(;)g(it)h(then)g(defaults)g(to)g Fo(on)p
Fr(.)36 b(Otherwise,)26 b(the)h(v)-5 b(alue)498 4320
y(m)n(ust)30 b(b)r(e)h(a)e(literal,)h(t)n(ypically)g(a)f(p)r(ositiv)n
(e)h(n)n(um)n(b)r(er.)44 b(If)30 b(the)h(second)e(argumen)n(t)g(is)498
4420 y Fo(?)36 b Fr(the)27 b(v)-5 b(alue)25 b(of)33 b
Fq(setting)g Fr(is)26 b(is)g(displa)n(y)n(ed)f(and)h(not)g(c)n(hanged.)
35 b(Doing)26 b Fo(,set)42 b(?)36 b Fr(will)498 4519
y(displa)n(y)27 b(a)g(list)h(of)g(the)f(setting)h(and)g(their)f(curren)
n(t)g(v)-5 b(alues.)p Black Black 332 4705 a Fo(,unset)41
b Fq(setting)498 4804 y Fo(,unset)g Fq(setting)35 b Fr(is)27
b(the)h(same)f(as)g Fo(,set)42 b Fq(setting)51 b Fo(off)p
Fr(.)415 5006 y(The)28 b(settings)f(are)g(as)g(follo)n(ws:)p
Black 1681 5255 a(17)p Black eop end
%%Page: 18 26
TeXDict begin 18 25 bop 0 TeXcolorgray Black Black Black
Black Black 780 523 a Fo(batch)26 b Fr(\(b)r(o)r(olean\))946
623 y(In)d(`batc)n(h)g(mo)r(de')f(an)n(y)g(error)f(or)h(in)n(terrupt)g
(that)h(comes)f(up)h(will)g(cause)f(Sc)n(heme)g(48)946
722 y(to)28 b(exit)g(immediately)g(with)g(a)g(non-zero)e(exit)i
(status.)37 b(Also,)28 b(the)g(command)f(pro-)946 822
y(cessor)f(do)r(esn't)i(prin)n(t)g(prompts.)36 b(Batc)n(h)27
b(mo)r(de)h(is)f(o\013)h(b)n(y)f(default.)p Black Black
780 999 a Fo(levels)f Fr(\(b)r(o)r(olean\))946 1099 y(Enables)h(or)g
(disables)f(the)i(automatic)f(pushing)h(of)f(a)g(new)h(command)f(lev)n
(el)g(when)946 1198 y(an)34 b(error,)g(in)n(terrupt,)h(or)e(other)h
(breakp)r(oin)n(t)f(o)r(ccurs.)55 b(When)35 b(enabled)f(\(the)g(de-)946
1298 y(fault\),)h(breakp)r(oin)n(ts)d(push)h(a)g(new)f(command)h(lev)n
(el,)h(and)e Fn(h)p Fr(eof)p Fn(i)i Fr(\(see)e(ab)r(o)n(v)n(e\))g(or)
946 1398 y Fo(,reset)24 b Fr(is)i(required)f(to)h(return)g(to)g(top)g
(lev)n(el.)36 b(The)26 b(e\013ects)g(of)g(pushed)h(command)946
1497 y(lev)n(els)g(include:)p Black 1046 1674 a Fn(\017)p
Black 41 w Fr(a)g(longer)g(prompt)p Black 1046 1813 a
Fn(\017)p Black 41 w Fr(reten)n(tion)g(of)h(the)g(con)n(tin)n(uation)e
(in)i(e\013ect)g(at)g(the)g(p)r(oin)n(t)g(of)f(error)p
Black 1046 1951 a Fn(\017)p Black 41 w Fr(confusion)g(among)g(some)g
(new)n(comers)946 2128 y(With)h Fo(levels)c Fr(disabled)i(one)g(m)n
(ust)h(issue)f(a)g Fo(,push)f Fr(command)h(immediately)h(fol-)946
2228 y(lo)n(wing)36 b(an)g(error)f(in)i(order)e(to)i(retain)f(the)h
(error)d(con)n(tin)n(uation)i(for)g(debugging)946 2327
y(purp)r(oses;)i(otherwise)c(the)h(con)n(tin)n(uation)e(is)i(lost)f(as)
g(so)r(on)g(as)g(the)h(fo)r(cus)f(ob)5 b(ject)946 2427
y(c)n(hanges.)35 b(If)27 b(y)n(ou)d(don't)i(kno)n(w)f(an)n(ything)g(ab)
r(out)h(the)g(a)n(v)-5 b(ailable)25 b(debugging)g(to)r(ols,)946
2527 y(then)k Fo(levels)c Fr(migh)n(t)i(as)g(w)n(ell)h(b)r(e)g
(disabled.)p Black Black 780 2704 a Fo(break-on-warnings)21
b Fr(\(b)r(o)r(olean\))946 2803 y(En)n(ter)k(a)h(new)g(command)f(lev)n
(el)h(when)g(a)f(w)n(arning)g(is)h(pro)r(duced,)g(just)g(as)f(when)i
(an)946 2903 y(error)k(o)r(ccurs.)50 b(Normally)31 b(w)n(arnings)f
(only)i(result)g(in)h(a)e(displa)n(y)n(ed)h(message)e(and)946
3003 y(the)e(program)e(do)r(es)h(not)h(stop)f(executing.)p
Black Black 780 3180 a Fo(ask-before-loadin)o(g)22 b
Fr(\(b)r(o)r(olean\))946 3279 y(If)33 b(on,)f(the)h(system)e(will)h
(ask)f(b)r(efore)h(loading)f(mo)r(dules)h(that)g(are)f(argumen)n(ts)f
(to)946 3379 y(the)e Fo(,open)e Fr(command.)37 b Fo(Ask-before-load)o
(ing)21 b Fr(is)27 b(o\013)h(b)n(y)f(default.)p Black
Black 946 3589 a Fo(>)44 b(,set)e(ask-before-load)o(ing)946
3689 y(will)g(ask)h(before)e(loading)g(modules)946 3789
y(>)j(,open)d(random)946 3888 y(Load)h(structure)e(random)h(\(y/n\)?)g
(y)946 3988 y(>)p Black Black 780 4198 a(load-noisily)23
b Fr(\(b)r(o)r(olean\))946 4298 y(When)h(on,)g(the)g(system)f(will)h
(prin)n(t)f(out)g(the)h(names)f(of)g(mo)r(dules)h(and)f(\014les)g(as)g
(they)946 4397 y(are)k(loaded.)36 b Fo(Load-noisily)23
b Fr(is)k(o\013)h(b)n(y)f(default.)p Black Black 946
4608 a Fo(>)44 b(,set)e(load-noisily)946 4707 y(will)g(notify)f(when)h
(loading)f(modules)g(and)h(files)946 4807 y(>)i(,open)d(random)946
4907 y([random)g(/usr/local/lib/sc)o(he)o(me)o(48/)o(bi)o(g/r)o(an)o
(do)o(m.s)o(cm)o(])946 5006 y(>)p Black 2130 5255 a Fr(18)p
Black eop end
%%Page: 19 27
TeXDict begin 19 26 bop 0 TeXcolorgray Black Black Black
Black Black 332 523 a Fo(inline-values)22 b Fr(\(b)r(o)r(olean\))498
623 y(This)d(con)n(trols)d(whether)j(or)e(not)i(the)g(compiler)e(is)i
(allo)n(w)n(ed)e(to)h(substitute)h(v)-5 b(ariables')498
722 y(v)g(alues)21 b(in-line.)34 b(When)22 b Fo(inline-values)15
b Fr(mo)r(de)21 b(is)g(on,)h(some)e(Sc)n(heme)h(pro)r(cedures)498
822 y(will)29 b(b)r(e)f(substituted)i(in-line;)f(when)f(it)h(is)f
(o\013,)h(none)f(will.)39 b(Section)p 0 0 1 TeXcolorrgb
28 w(2.4)p Black 28 w(has)28 b(more)498 922 y(information.)p
Black Black 332 1088 a Fo(inspector-menu-l)o(imi)o(t)21
b Fr(\(p)r(ositiv)n(e)28 b(in)n(teger\))498 1188 y(This)23
b(con)n(trols)e(ho)n(w)g(man)n(y)h(items)h(the)g(displa)n(y)n(ed)e(p)r
(ortion)h(of)h(the)g(insp)r(ector)f(men)n(u)498 1288
y(con)n(tains)27 b(at)g(most.)37 b(\(See)28 b(Section)p
0 0 1 TeXcolorrgb 27 w(3.8)p Black(.\))p Black Black
332 1455 a Fo(inspector-writin)o(g-d)o(ep)o(th)21 b Fr(\(p)r(ositiv)n
(e)28 b(in)n(teger\))498 1554 y(This)35 b(con)n(trols)d(the)j(maxim)n
(um)g(depth)g(to)f(whic)n(h)g(the)h(insp)r(ector)f(prin)n(ts)g(v)-5
b(alues.)498 1654 y(\(See)28 b(Section)p 0 0 1 TeXcolorrgb
28 w(3.8)p Black(.\))p Black Black 332 1821 a Fo(inspector-writin)o
(g-l)o(en)o(gth)21 b Fr(\(p)r(ositiv)n(e)27 b(in)n(teger\))498
1920 y(This)33 b(con)n(trols)e(the)i(maxim)n(um)f(length)h(to)f(whic)n
(h)h(the)g(insp)r(ector)f(prin)n(ts)g(v)-5 b(alues.)498
2020 y(\(See)28 b(Section)p 0 0 1 TeXcolorrgb 28 w(3.8)p
Black(.\))p Black Black 332 2187 a Fo(condition-writin)o(g-d)o(ep)o(th)
21 b Fr(\(p)r(ositiv)n(e)28 b(in)n(teger\))498 2287 y(This)g(con)n
(trols)e(the)i(maxim)n(um)f(depth)h(to)g(whic)n(h)f(conditions)h(are)e
(prin)n(ted.)p Black Black 332 2453 a Fo(condition-writin)o(g-l)o(en)o
(gth)21 b Fr(\(p)r(ositiv)n(e)27 b(in)n(teger\))498 2553
y(This)h(con)n(trols)e(the)i(maxim)n(um)f(length)h(to)f(whic)n(h)h
(conditions)f(are)g(prin)n(ted.)p Black Black 332 2720
a Fo(profiler-interru)o(pt-)o(ti)o(me)21 b Fr(\(p)r(ositiv)n(e)28
b(in)n(teger\))498 2820 y(This)33 b(con)n(trols)e(the)i(time)g(b)r(et)n
(w)n(een)f(t)n(w)n(o)g(pro\014ler)g(sampling)g(in)n(terrupts)g(\(in)h
(mil-)498 2919 y(liseconds,)27 b(see)g(section)p 0 0 1
TeXcolorrgb 27 w(3.6)p Black(\).)p Black Black 332 3086
a Fo(profiler-measure)o(-no)o(ni)o(nst)o(r)21 b Fr(\(b)r(o)r(olean\))
498 3186 y(When)36 b(this)g(\015ag)f(is)g(enabled,)j(call-times)d(will)
h(b)r(e)g(measured)e(b)n(y)i(the)g(sampling)498 3285
y(pro)r(cess.)48 b(When)32 b(it)g(is)f(disabled,)h(call-times)f(will)h
(only)f(b)r(e)h(measured)f(when)h(the)498 3385 y(pro)r(cedure)27
b(has)g(b)r(een)h(instrumen)n(ted)g(\(see)f(section)p
0 0 1 TeXcolorrgb 27 w(3.6)p Black(\).)p Black Black
332 3552 a Fo(trace-writing-le)o(ngt)o(h)21 b Fr(\(p)r(ositiv)n(e)28
b(in)n(teger\))498 3651 y(This)22 b(con)n(trols)f(the)i(maxim)n(um)f
(length)g(to)g(whic)n(h)g(tracing)f(prin)n(ts)h(pro)r(cedure)f(calls.)
291 3927 y Fj(3.8)135 b(Insp)t(ection)45 b(mo)t(de)291
4109 y Fr(There)33 b(is)h(a)g(data)f(insp)r(ector)h(a)n(v)-5
b(ailable)32 b(via)i(the)g Fo(,inspect)d Fr(and)j Fo(,debug)d
Fr(commands.)291 4209 y(The)22 b(insp)r(ector)g(is)g(particularly)f
(useful)h(with)h(pro)r(cedures,)f(con)n(tin)n(uations,)g(and)h
(records.)291 4309 y(The)33 b(command)h(pro)r(cessor)e(can)h(b)r(e)h
(tak)n(en)f(out)h(of)g(insp)r(ection)g(mo)r(de)g(b)n(y)g(using)f(the)h
Fo(q)291 4408 y Fr(command.)50 b(When)33 b(in)g(insp)r(ection)f(mo)r
(de,)i(input)f(that)g(b)r(egins)f(with)h(a)f(letter)g(or)g(digit)291
4508 y(is)f(read)f(as)g(a)h(command,)g(not)g(as)g(an)g(expression.)45
b(T)-7 b(o)31 b(see)g(the)g(v)-5 b(alue)31 b(of)g(a)g(v)-5
b(ariable)30 b(or)291 4608 y(n)n(um)n(b)r(er,)d(do)g
Fo(\(begin)41 b Fq(exp)5 b Fo(\))28 b Fr(or)f(use)g(the)h
Fo(,run)42 b Fq(exp)33 b Fr(command.)415 4707 y(In)c(insp)r(ection)g
(mo)r(de)g(the)g(command)g(pro)r(cessor)d(prin)n(ts)j(out)f(a)h(men)n
(u)g(of)f(selectable)291 4807 y(comp)r(onen)n(ts)33 b(for)g(the)h
(curren)n(t)f(fo)r(cus)h(ob)5 b(ject.)55 b(T)-7 b(o)33
b(insp)r(ect)h(a)g(particular)e(comp)r(onen)n(t,)291
4907 y(just)24 b(t)n(yp)r(e)g(the)g(corresp)r(onding)e(n)n(um)n(b)r(er)
i(in)g(the)g(men)n(u.)36 b(That)23 b(comp)r(onen)n(t)h(b)r(ecomes)g
(the)291 5006 y(new)j(fo)r(cus)h(ob)5 b(ject.)37 b(F)-7
b(or)26 b(example:)p Black 1681 5255 a(19)p Black eop
end
%%Page: 20 28
TeXDict begin 20 27 bop 0 TeXcolorgray Black Black Black
Black Black 739 523 a Fo(>)43 b(,inspect)d('\(a)j(\(b)f(c\))h(d\))739
623 y(\(a)g(\(b)f(c\))h(d\))739 822 y([0])f(a)739 922
y([1])g(\(b)h(c\))739 1021 y([2])f(d)739 1121 y(:)h(1)739
1220 y(\(b)g(c\))739 1420 y([0])f(b)739 1519 y([1])g(c)739
1619 y(:)863 1788 y Fr(When)25 b(a)e(new)h(fo)r(cus)g(ob)5
b(ject)23 b(is)h(selected)f(the)h(previous)f(one)g(is)h(pushed)g(on)n
(to)f(a)g(stac)n(k.)739 1887 y(Y)-7 b(ou)29 b(can)g(p)r(op)g(the)h
(stac)n(k,)f(rev)n(erting)e(to)i(the)h(previous)e(ob)5
b(ject,)29 b(with)h(the)g Fo(u)f Fr(command,)739 1987
y(or)e(use)g(the)h Fo(stack)e Fr(command)h(to)g(mo)n(v)n(e)g(to)g(an)h
(earlier)e(ob)5 b(ject.)863 2087 y(Commands)27 b(useful)h(when)g(in)g
(insp)r(ection)g(mo)r(de:)p Black 863 2256 a Fn(\017)p
Black 41 w Fo(u)g Fr(\(up\))g(p)r(op)g(ob)5 b(ject)27
b(stac)n(k)p Black 863 2425 a Fn(\017)p Black 41 w Fo(m)h
Fr(\(more\))f(prin)n(t)h(more)e(of)i(a)f(long)g(men)n(u)p
Black 863 2595 a Fn(\017)p Black 41 w Fo(\(...\))35 b
Fr(ev)-5 b(aluate)27 b(a)h(form)f(and)g(select)h(result)p
Black 863 2764 a Fn(\017)p Black 41 w Fo(q)g Fr(quit)p
Black 863 2934 a Fn(\017)p Black 41 w Fo(template)h Fr(select)j(a)f
(closure)g(or)g(con)n(tin)n(uation's)g(template)h(\(T)-7
b(emplates)32 b(are)f(the)946 3033 y(static)25 b(comp)r(onen)n(ts)f(of)
g(pro)r(cedures;)h(these)f(are)g(found)h(inside)g(of)f(pro)r(cedures)f
(and)946 3133 y(con)n(tin)n(uations,)37 b(and)f(con)n(tain)f(the)h
(quoted)f(constan)n(ts)g(and)h(top-lev)n(el)f(v)-5 b(ariables)946
3233 y(referred)27 b(to)g(b)n(y)h(b)n(yte-compiled)f(co)r(de.\))p
Black 863 3402 a Fn(\017)p Black 41 w Fo(d)e Fr(\(do)n(wn\))f(mo)n(v)n
(e)g(to)h(the)g(next)f(con)n(tin)n(uation)g(\(curren)n(t)g(ob)5
b(ject)25 b(m)n(ust)f(b)r(e)i(a)e(con)n(tin-)946 3502
y(uation\))p Black 863 3671 a Fn(\017)p Black 41 w Fo(menu)i
Fr(prin)n(t)i(the)g(selection)f(men)n(u)h(for)f(the)h(fo)r(cus)f(ob)5
b(ject)863 3840 y(Multiple)39 b(selection)e(commands)g(\()p
Fo(u)p Fr(,)j Fo(d)p Fr(,)f(and)f(men)n(u)f(indexes\))h(ma)n(y)e(b)r(e)
i(put)g(on)g(a)739 3939 y(single)27 b(line.)863 4040
y(All)21 b(ordinary)d(commands)h(are)g(a)n(v)-5 b(ailable)18
b(when)i(in)g(insp)r(ection)g(mo)r(de.)35 b(Similarly)-7
b(,)21 b(the)739 4139 y(insp)r(ection)28 b(commands)f(can)g(b)r(e)h
(used)f(when)h(not)g(in)g(insp)r(ection)f(mo)r(de.)37
b(F)-7 b(or)27 b(example:)p Black Black 739 4309 a Fo(>)43
b(\(list)f('a)g('\(b)h(c\))f('d\))739 4408 y('\(a)g(\(b)h(c\))g(d\))739
4508 y(>)g(,1)739 4608 y('\(b)f(c\))739 4707 y(>)h(,menu)739
4807 y([0])f(b)739 4907 y([1])g(c)739 5006 y(>)p Black
2130 5255 a Fr(20)p Black eop end
%%Page: 21 29
TeXDict begin 21 28 bop 0 TeXcolorgray Black Black Black
415 523 a Fr(If)34 b(the)f(curren)n(t)f(command)h(lev)n(el)f(w)n(as)g
(initiated)i(b)r(ecause)f(of)g(a)f(breakp)r(oin)n(t)g(in)i(the)291
623 y(next)d(lev)n(el)f(do)n(wn,)i(then)f Fo(,debug)e
Fr(will)i(in)n(v)n(ok)n(e)f(the)h(insp)r(ector)g(on)f(the)i(con)n(tin)n
(uation)e(at)291 722 y(the)h(p)r(oin)n(t)g(of)g(the)h(error.)45
b(The)31 b Fo(u)g Fr(and)g Fo(d)g Fr(\(up)g(and)g(do)n(wn\))g(commands)
g(then)g(mak)n(e)g(the)291 822 y(insp)r(ected-v)-5 b(alue)19
b(stac)n(k)f(lo)r(ok)g(lik)n(e)g(a)h(con)n(v)n(en)n(tional)e(stac)n(k)h
(debugger,)i(with)f(con)n(tin)n(uations)291 922 y(pla)n(ying)f(the)h
(role)f(of)h(stac)n(k)f(frames.)34 b Fo(D)19 b Fr(go)r(es)f(to)h(older)
f(or)g(deep)r(er)h(con)n(tin)n(uations)f(\(frames\),)291
1021 y(and)27 b Fo(u)g Fr(go)r(es)g(bac)n(k)g(up)h(to)f(more)g(recen)n
(t)g(ones.)291 1295 y Fj(3.9)135 b(Command)45 b(programs)291
1477 y Fr(The)31 b Fo(exec)e Fr(pac)n(k)-5 b(age)30 b(con)n(tains)g
(pro)r(cedures)g(that)h(are)f(used)h(to)g(execute)g(the)g(command)291
1576 y(pro)r(cessor's)16 b(commands.)34 b(A)19 b(command)f
Fo(,)p Fq(fo)l(o)25 b Fr(is)19 b(executed)g(b)n(y)g(applying)f(the)i(v)
-5 b(alue)19 b(of)g(the)291 1676 y(iden)n(ti\014er)k
Fq(fo)l(o)31 b Fr(in)24 b(the)g Fo(exec)e Fr(pac)n(k)-5
b(age)23 b(to)g(the)i(\(suitably)f(parsed\))f(command)g(argumen)n(ts.)p
Black Black 332 1853 a Fo(,exec)42 b([)p Fq(c)l(ommand)9
b Fo(])498 1952 y Fr(Ev)-5 b(aluate)27 b Fq(c)l(ommand)37
b Fr(in)28 b(the)g Fo(exec)e Fr(pac)n(k)-5 b(age.)35
b(F)-7 b(or)27 b(example,)g(use)p Black Black 498 2146
a Fo(,exec)42 b(,load)f Fq(\014lename)498 2340 y Fr(to)35
b(load)f(a)h(\014le)g(con)n(taining)f(commands.)59 b(If)36
b(no)e Fq(c)l(ommand)45 b Fr(is)35 b(giv)n(en,)h(the)f
Fo(exec)498 2439 y Fr(pac)n(k)-5 b(age)26 b(b)r(ecomes)h(the)h
(execution)g(pac)n(k)-5 b(age)26 b(for)h(future)h(commands.)415
2616 y(The)g(required)e(argumen)n(t)h(t)n(yp)r(es)g(are)g(as)g(follo)n
(ws:)p Black 415 2778 a Fn(\017)p Black 41 w Fr(\014lenames)g(should)h
(b)r(e)g(strings)p Black 415 2942 a Fn(\017)p Black 41
w Fr(other)f(names)g(and)h(iden)n(ti\014ers)f(should)g(b)r(e)h(sym)n(b)
r(ols)p Black 415 3105 a Fn(\017)p Black 41 w Fr(expressions)e(should)h
(b)r(e)h(s-expressions)p Black 415 3269 a Fn(\017)p Black
41 w Fr(commands)j(\(as)h(for)f Fo(,config)e Fr(and)j
Fo(,exec)e Fr(itself)6 b(\))33 b(should)e(b)r(e)h(lists)g(of)g(the)g
(form)498 3369 y Fo(\()p Fq(c)l(ommand-name)50 b(ar)l(gument)h
Fo(...\))35 b Fr(where)27 b Fq(c)l(ommand-name)35 b Fr(is)27
b(a)g(sym)n(b)r(ol.)415 3530 y(F)-7 b(or)27 b(example,)g(the)h(follo)n
(wing)f(t)n(w)n(o)g(commands)g(are)f(equiv)-5 b(alen)n(t:)p
Black Black 291 3692 a Fo(,config)40 b(,load)i(my-file.scm)291
3891 y(,exec)f(\(config)g('\(load)g("my-file.scm"\)\))415
4053 y Fr(The)26 b(\014le)g Fo(scheme/vm/load-vm)o(.s)o(cm)19
b Fr(in)27 b(the)f(source)f(directory)f(con)n(tains)h(an)h(exam-)291
4152 y(ple)h(of)h(an)f Fo(exec)f Fr(program.)291 4426
y Fj(3.10)135 b(Building)45 b(images)p Black Black 332
4608 a Fo(,dump)d Fq(\014lename)50 b Fo([)p Fq(identi\014c)l(ation)6
b Fo(])498 4707 y Fr(W)-7 b(rites)36 b(the)f(curren)n(t)g(heap)g(out)g
(to)h(a)f(\014le,)i(whic)n(h)f(can)f(then)g(b)r(e)h(run)f(using)h(the)
498 4807 y(virtual)29 b(mac)n(hine.)41 b(The)30 b(new)f(image)f(\014le)
i(includes)f(the)h(command)f(pro)r(cessor.)39 b(If)498
4907 y(presen)n(t,)g Fq(identi\014c)l(ation)45 b Fr(should)37
b(b)r(e)h(a)f(string)f(\(written)i(with)g(double)f(quotes\);)498
5006 y(this)28 b(string)f(will)h(b)r(e)g(part)f(of)g(the)h(greeting)f
(message)f(as)h(the)h(image)f(starts)g(up.)p Black 1681
5255 a(21)p Black eop end
%%Page: 22 30
TeXDict begin 22 29 bop 0 TeXcolorgray Black Black Black
Black Black 780 523 a Fo(,build)42 b Fq(exp)48 b(\014lename)j
Fo([)p Fq(option)30 b(.)13 b(.)g(.)g Fo(])946 623 y Fr(Lik)n(e)34
b Fo(,dump)p Fr(,)g(except)g(that)g(the)h(image)e(\014le)h(con)n(tains)
f(the)i(v)-5 b(alue)34 b(of)40 b Fq(exp)5 b Fr(,)36 b(whic)n(h)946
722 y(should)21 b(b)r(e)g(a)f(pro)r(cedure)f(of)i(one)f(argumen)n(t,)h
(instead)f(of)g(the)h(command)f(pro)r(cessor.)946 822
y(When)33 b Fq(\014lename)40 b Fr(is)32 b(resumed,)h(that)g(pro)r
(cedure)e(will)i(b)r(e)g(in)n(v)n(ok)n(ed)e(on)h(the)h(VM's)946
922 y Fo(-a)e Fr(argumen)n(ts,)g(whic)n(h)g(are)f(passed)h(as)f(a)h
(list)h(of)f(OS)g(strings)f(\(see)i(section)p 0 0 1 TeXcolorrgb
30 w(5.15)p Black(.)946 1021 y(The)25 b(pro)r(cedure)e(should)h(return)
f(an)h(in)n(teger,)g(whic)n(h)g(is)g(returned)g(to)g(the)g(program)946
1121 y(that)j(in)n(v)n(ok)n(ed)e(the)h(VM.)h(The)f(command)g(pro)r
(cessor)e(and)i(debugging)f(system)h(are)946 1220 y(not)h(included)h
(in)f(the)g(image)f(\(unless)h(y)n(ou)f(go)g(to)h(some)f(e\013ort)h(to)
g(preserv)n(e)e(them,)946 1320 y(suc)n(h)j(as)f(retaining)f(a)i(con)n
(tin)n(uation\).)946 1450 y(If)46 b Fo(no-warnings)33
b Fr(app)r(ears)38 b(as)f(an)h Fq(option)46 b Fr(after)38
b(the)h(\014le)f(name,)j(no)d(w)n(arnings)946 1549 y(ab)r(out)30
b(unde\014ned)h(external)e(bindings)h(\(see)g(Section)p
0 0 1 TeXcolorrgb 30 w(8.2)p Black(\))f(will)i(b)r(e)f(prin)n(ted)g(up)
r(on)946 1649 y(resuming)e(the)h(image.)38 b(This)28
b(is)g(useful)h(when)f(the)h(de\014nitions)f(of)h(external)e(bind-)946
1749 y(ings)d(app)r(ear)g(in)h(shared)e(ob)5 b(jects)24
b(that)h(are)e(only)h(loaded)g(after)g(the)h(resumption)f(of)946
1848 y(the)k(image.)946 1978 y(Doing)39 b Fo(,flush)e
Fr(b)r(efore)i(building)g(an)g(image)f(will)i(reduce)e(the)i(amoun)n(t)
e(of)h(de-)946 2078 y(bugging)c(information)g(in)h(the)g(image,)h
(making)e(for)h(a)f(smaller)g(image)g(\014le,)j(but)946
2177 y(if)33 b(an)e(error)f(o)r(ccurs,)i(the)g(error)e(message)g(ma)n
(y)h(b)r(e)h(less)f(helpful.)50 b(Doing)32 b Fo(,flush)946
2277 y(source)42 b(maps)25 b Fr(b)r(efore)h(loading)g(an)n(y)f
(programs)g(used)h(in)h(the)g(image)f(will)h(mak)n(e)f(it)946
2377 y(still)i(smaller.)36 b(See)28 b(section)p 0 0 1
TeXcolorrgb 27 w(3.11)p Black 26 w(for)f(more)g(information.)739
2648 y Fj(3.11)135 b(Resource)46 b(query)f(and)g(con)l(trol)p
Black Black 780 2830 a Fo(,time)d Fq(exp)946 2930 y Fr(Measure)27
b(execution)g(time.)p Black Black 780 3090 a Fo(,collect)946
3189 y Fr(In)n(v)n(ok)n(e)h(the)i(garbage)e(collector.)42
b(Ordinarily)28 b(this)i(happ)r(ens)f(automatically)-7
b(,)30 b(but)946 3289 y(the)i(command)e(tells)h(ho)n(w)g(m)n(uc)n(h)f
(space)g(is)h(a)n(v)-5 b(ailable)30 b(b)r(efore)g(and)h(after)g(the)g
(col-)946 3389 y(lection.)p Black Black 780 3549 a Fo(,keep)42
b Fq(kind)p Black Black 780 3709 a Fo(,flush)g Fq(kind)946
3808 y Fr(These)34 b(con)n(trol)f(the)h(amoun)n(t)f(of)h(debugging)f
(information)g(retained)g(after)h(com-)946 3908 y(piling)29
b(pro)r(cedures.)39 b(This)29 b(information)f(can)g(consume)g(a)h(fair)
f(amoun)n(t)g(of)h(space.)946 4007 y Fq(kind)37 b Fr(is)28
b(one)f(of)h(the)g(follo)n(wing:)p Black 1046 4167 a
Fn(\017)p Black 41 w Fo(maps)e Fr(-)h(en)n(vironmen)n(t)g(maps)g(\(lo)r
(cal)h(v)-5 b(ariable)26 b(names,)h(for)g(insp)r(ector\))p
Black 1046 4294 a Fn(\017)p Black 41 w Fo(source)e Fr(-)j(source)e(co)r
(de)h(for)g(con)n(tin)n(uations)g(\(displa)n(y)n(ed)g(b)n(y)g(insp)r
(ector\))p Black 1046 4421 a Fn(\017)p Black 41 w Fo(names)j
Fr(-)h(pro)r(cedure)g(names)h(\(as)f(displa)n(y)n(ed)g(b)n(y)h
Fo(write)e Fr(and)i(in)g(error)e(mes-)1129 4520 y(sages\))p
Black 1046 4647 a Fn(\017)p Black 41 w Fo(files)c Fr(-)h(source)f
(\014le)i(names)946 4807 y(These)c(commands)f(refer)g(to)h(future)g
(compilations)f(only)-7 b(,)24 b(not)g(to)f(pro)r(cedures)g(that)946
4907 y(already)j(exist.)36 b(T)-7 b(o)27 b(ha)n(v)n(e)f(an)n(y)g
(e\013ect,)i(they)f(m)n(ust)g(b)r(e)g(done)g(b)r(efore)g(programs)d
(are)946 5006 y(loaded.)37 b(The)27 b(default)h(is)g(to)f(k)n(eep)g
(all)h(four)f(t)n(yp)r(es.)p Black 2130 5255 a(22)p Black
eop end
%%Page: 23 31
TeXDict begin 23 30 bop 0 TeXcolorgray Black Black Black
Black Black 332 523 a Fo(,flush)498 623 y Fr(The)33 b(\015ush)g
(command)f(with)h(no)f(argumen)n(t)g(deletes)h(the)g(database)e(of)i
(names)f(of)498 722 y(initial)27 b(pro)r(cedures.)35
b(Doing)27 b Fo(,flush)d Fr(b)r(efore)i(a)g Fo(,build)f
Fr(or)g Fo(,dump)g Fr(will)i(mak)n(e)f(the)498 822 y(resulting)e(image)
f(signi\014can)n(tly)g(smaller,)h(but)g(will)g(compromise)f(the)i
(information)498 922 y(con)n(ten)n(t)i(of)h(man)n(y)f(error)f
(messages.)291 1199 y Fj(3.12)135 b(Threads)291 1382
y Fr(Eac)n(h)30 b(command)h(lev)n(el)g(has)g(its)h(o)n(wn)e(set)i(of)f
(threads.)48 b(These)31 b(threads)g(are)g(susp)r(ended)291
1482 y(when)c(a)g(new)g(lev)n(el)g(is)g(en)n(tered)g(and)g(resumed)g
(when)g(the)h(o)n(wning)e(lev)n(el)h(again)f(b)r(ecomes)291
1581 y(the)h(curren)n(t)g(lev)n(el.)36 b(A)27 b(thread)g(that)h(raises)
d(an)i(error)f(is)h(not)g(resumed)g(unless)g(explicitly)291
1681 y(restarted)32 b(using)h(the)i Fo(,proceed)30 b
Fr(command.)55 b(In)34 b(addition)f(to)h(an)n(y)f(threads)g(spa)n(wned)
291 1780 y(b)n(y)c(the)i(user,)f(eac)n(h)f(lev)n(el)g(has)h(a)f(thread)
h(that)g(runs)f(the)i(command)e(pro)r(cessor)f(on)i(that)291
1880 y(lev)n(el.)42 b(A)29 b(new)h(command-pro)r(cessor)c(thread)j(is)h
(started)f(if)h(the)f(curren)n(t)g(one)g(dies)g(or)g(is)291
1980 y(terminated.)44 b(When)31 b(a)f(command)g(lev)n(el)f(is)i
(abandoned)e(for)h(a)f(lo)n(w)n(er)g(lev)n(el,)i(or)e(when)h(a)291
2079 y(lev)n(el)g(is)h(restarted)e(using)i Fo(,reset)p
Fr(,)e(all)h(of)h(the)g(threads)f(on)h(that)g(lev)n(el)f(are)g
(terminated)291 2179 y(and)d(an)n(y)h Fo(dynamic-wind)23
b Fr(\\after")j(th)n(unks)i(are)e(run.)415 2279 y(The)44
b(follo)n(wing)f(commands)h(are)f(useful)h(when)h(debugging)e(m)n
(ultithreaded)h(pro-)291 2379 y(grams:)p Black Black
332 2547 a Fo(,resume)d([)p Fq(numb)l(er)9 b Fo(])498
2646 y Fr(P)n(ops)32 b(out)g(to)h(a)f(giv)n(en)g(lev)n(el)h(and)f
(resumes)g(running)h(all)f(threads)h(at)f(that)h(lev)n(el.)498
2746 y Fq(Numb)l(er)j Fr(defaults)28 b(to)f(zero.)p Black
Black 332 2914 a Fo(,threads)498 3014 y Fr(In)n(v)n(ok)n(es)k(the)j
(insp)r(ector)f(on)g(a)g(list)g(of)g(the)h(threads)e(running)h(at)g
(the)h(next)f(lo)n(w)n(er)498 3113 y(command)27 b(lev)n(el.)p
Black Black 332 3282 a Fo(,exit-when-done)37 b([)p Fq(exp)5
b Fo(])498 3381 y Fr(W)-7 b(aits)35 b(un)n(til)g(all)g(user)f(threads)h
(ha)n(v)n(e)e(completed)i(and)g(then)g(exits)g(bac)n(k)f(out)h(to)498
3481 y(shell)26 b(\(or)f(executiv)n(e)g(or)g(whatev)n(er)f(in)n(v)n(ok)
n(ed)h(Sc)n(heme)g(48)g(in)h(the)g(\014rst)f(place\).)37
b Fq(Exp)498 3580 y Fr(should)19 b(ev)-5 b(aluate)18
b(to)h(an)f(in)n(teger)g(whic)n(h)h(is)f(then)i(returned)e(to)h(the)g
(calling)f(program.)291 3858 y Fj(3.13)135 b(Quite)46
b(obscure)p Black Black 332 4041 a Fo(,go)c Fq(exp)498
4141 y Fr(This)31 b(is)f(lik)n(e)g Fo(,exit)42 b Fq(exp)36
b Fr(except)30 b(that)h(the)g(ev)-5 b(aluation)30 b(of)37
b Fq(exp)f Fr(is)30 b(tail-recursiv)n(e)498 4240 y(with)i(resp)r(ect)g
(to)f(the)h(command)f(pro)r(cessor.)47 b(This)31 b(means)g(that)h(the)g
(command)498 4340 y(pro)r(cessor)25 b(itself)i(can)f(probably)f(b)r(e)i
(GC'ed,)g(should)f(a)g(garbage)f(collection)h(o)r(ccur)498
4439 y(in)37 b(the)g(execution)f(of)43 b Fq(exp)5 b Fr(.)64
b(If)37 b(an)f(error)e(o)r(ccurs)i(Sc)n(heme)g(48)g(will)h(exit)f(with)
h(a)498 4539 y(non-zero)26 b(v)-5 b(alue.)p Black Black
332 4707 a Fo(,translate)40 b Fq(fr)l(om)50 b(to)498
4807 y Fr(F)-7 b(or)22 b Fo(load)e Fr(and)i(the)h Fo(,load)d
Fr(command)i(\(but)h(not)g(for)e Fo(open-)p Fn(f)p Fo(in|out)p
Fn(g)p Fo(put-)o(fi)o(le)o Fr(\),)498 4907 y(\014le)f(names)e(b)r
(eginning)h(with)h(the)g(string)f Fq(fr)l(om)27 b Fr(will)19
b(b)r(e)h(c)n(hanged)e(so)h(that)g(the)h(initial)498
5006 y Fq(fr)l(om)35 b Fr(is)27 b(replaced)g(b)n(y)g(the)h(string)g
Fq(to)5 b Fr(.)37 b(E.g.)p Black 1681 5255 a(23)p Black
eop end
%%Page: 24 32
TeXDict begin 24 31 bop 0 TeXcolorgray Black Black Black
Black Black 946 523 a Fo(,translate)40 b(/usr/gjc/)g(/zu/gjc/)946
722 y Fr(will)26 b(cause)e Fo(\(load)42 b("/usr/gjc/foo.sc)o(m")o(\))19
b Fr(to)25 b(ha)n(v)n(e)f(the)i(same)e(e\013ect)i(as)e
Fo(\(load)946 822 y("/zu/gjc/foo.scm")o(\))p Fr(.)p Black
Black 780 988 a Fo(,from-file)40 b Fq(\014lename)50 b(form)h
Fo(...)42 b(,end)946 1088 y Fr(This)31 b(is)f(used)g(b)n(y)h(the)f
Fo(cmuscheme48)c Fr(Emacs)k(library)f(to)h(indicate)g(the)h(\014le)g
(from)946 1187 y(whic)n(h)c(the)g Fq(form)6 b Fr(s)28
b(came.)36 b Fq(Filename)f Fr(is)26 b(then)i(used)e(b)n(y)h(the)g
(command)f(pro)r(cessor)946 1287 y(to)i(determine)g(the)g(pac)n(k)-5
b(age)26 b(in)h(whic)n(h)h(the)g Fq(form)6 b Fr(s)29
b(are)d(to)i(b)r(e)g(ev)-5 b(aluated.)p Black 2130 5255
a(24)p Black eop end
%%Page: 25 33
TeXDict begin 25 32 bop 0 TeXcolorgray Black Black Black
291 1150 a Fl(Chapter)64 b(4)291 1570 y Fp(Mo)6 b(dule)78
b(system)291 2006 y Fr(This)41 b(c)n(hapter)f(describ)r(es)h(Sc)n(heme)
g(48's)f(mo)r(dule)i(system.)77 b(The)41 b(mo)r(dule)h(system)f(is)291
2105 y(unique)18 b(in)h(the)g(exten)n(t)f(to)g(whic)n(h)h(it)f(supp)r
(orts)g(b)r(oth)h(static)f(linking)h(and)f(rapid)g(turnaround)291
2205 y(during)43 b(program)e(dev)n(elopmen)n(t.)84 b(The)43
b(design)g(w)n(as)g(in\015uenced)h(b)n(y)f(Standard)g(ML)291
2305 y(mo)r(dules[)p 0 0 1 TeXcolorrgb(7)p Black -1 w(])35
b(and)g(b)n(y)g(the)g(mo)r(dule)g(system)g(for)g(Sc)n(heme)f(Xero)n(x[)
p 0 0 1 TeXcolorrgb(4)p Black -1 w(].)59 b(It)35 b(has)g(also)e(b)r
(een)291 2404 y(shap)r(ed)d(b)n(y)g(the)h(needs)f(of)h(Sc)n(heme)f(48,)
h(whic)n(h)f(is)g(designed)g(to)h(run)f(b)r(oth)h(on)f(w)n(orksta-)291
2504 y(tions)d(and)g(on)h(relativ)n(ely)e(small)h(\(less)h(than)f(1)h
(Mb)n(yte\))f(em)n(b)r(edded)i(con)n(trollers.)415 2608
y(Except)21 b(where)f(noted,)i(ev)n(erything)e(describ)r(ed)h(here)f
(is)h(implemen)n(ted)h(in)f(Sc)n(heme)g(48,)291 2707
y(and)f(exercised)g(b)n(y)g(the)h(Sc)n(heme)g(48)f(implemen)n(tation)g
(and)h(some)f(application)g(programs.)415 2812 y(Unlik)n(e)k(the)g
(Common)f(Lisp)g(pac)n(k)-5 b(age)22 b(system,)j(the)f(mo)r(dule)g
(system)f(describ)r(ed)g(here)291 2911 y(con)n(trols)32
b(the)i(mapping)g(of)g(names)f(to)h(denotations,)h(not)f(the)g(mapping)
g(of)g(strings)f(to)291 3011 y(sym)n(b)r(ols.)291 3309
y Fj(4.1)135 b(In)l(tro)t(duction)291 3499 y Fr(The)40
b(mo)r(dule)h(system)f(supp)r(orts)g(the)h(structured)f(division)g(of)g
(a)g(corpus)g(of)g(Sc)n(heme)291 3598 y(soft)n(w)n(are)30
b(in)n(to)i(a)g(set)h(of)f(mo)r(dules.)51 b(Eac)n(h)31
b(mo)r(dule)i(has)f(its)g(o)n(wn)g(isolated)g(namespace,)291
3698 y(with)24 b(visibilit)n(y)f(of)h(bindings)g(con)n(trolled)e(b)n(y)
i(mo)r(dule)g(descriptions)f(written)h(in)g(a)f(sp)r(ecial)291
3798 y Fq(c)l(on\014gur)l(ation)29 b(language.)415 3902
y Fr(A)j(mo)r(dule)g(ma)n(y)f(b)r(e)i(instan)n(tiated)e(m)n(ultiple)i
(times,)g(pro)r(ducing)e(sev)n(eral)f Fq(p)l(ackages)p
Fr(,)291 4001 y(just)19 b(as)e(a)h(lam)n(b)r(da-expression)f(can)h(b)r
(e)g(instan)n(tiated)h(m)n(ultiple)g(times)f(to)h(pro)r(duce)f(sev)n
(eral)291 4101 y(di\013eren)n(t)26 b(pro)r(cedures.)35
b(Since)27 b(single)f(instan)n(tiation)f(is)i(the)f(normal)g(case,)f(w)
n(e)h(will)h(defer)291 4200 y(discussion)d(of)i(m)n(ultiple)g(instan)n
(tiation)f(un)n(til)h(a)g(later)f(section.)35 b(F)-7
b(or)25 b(no)n(w)g(y)n(ou)g(can)g(think)291 4300 y(of)41
b(a)g(pac)n(k)-5 b(age)40 b(as)h(simply)g(a)g(mo)r(dule's)h(in)n
(ternal)e(en)n(vironmen)n(t)h(mapping)g(names)g(to)291
4400 y(denotations.)415 4504 y(A)25 b(mo)r(dule)g(exp)r(orts)g
(bindings)f(b)n(y)h(pro)n(viding)e(views)i(on)n(to)f(the)h(underlying)f
(pac)n(k)-5 b(age.)291 4603 y(Suc)n(h)25 b(a)f(view)h(is)g(called)f(a)h
Fq(structur)l(e)e Fr(\(terminology)h(from)g(Standard)h(ML\).)g(One)g
(mo)r(dule)291 4703 y(ma)n(y)32 b(pro)n(vide)g(sev)n(eral)f(di\013eren)
n(t)j(views.)53 b(A)33 b(structure)g(is)g(just)h(a)e(subset)h(of)h(the)
f(pac)n(k-)291 4803 y(age's)26 b(bindings.)38 b(The)27
b(particular)g(set)h(of)f(names)h(whose)f(bindings)h(are)e(exp)r(orted)
i(is)g(the)291 4902 y(structure's)e Fq(interfac)l(e)p
Fr(.)415 5006 y(A)38 b(mo)r(dule)g(imp)r(orts)g(bindings)g(from)f
(other)g(mo)r(dules)h(b)n(y)f(either)h Fq(op)l(ening)h
Fr(or)e Fq(ac-)p Black 1681 5255 a Fr(25)p Black eop
end
%%Page: 26 34
TeXDict begin 26 33 bop 0 TeXcolorgray Black Black Black
739 523 a Fq(c)l(essing)31 b Fr(some)f(structures)g(that)h(are)f(built)
h(on)f(other)g(pac)n(k)-5 b(ages.)45 b(When)31 b(a)f(structure)g(is)739
623 y(op)r(ened,)e(all)f(of)g(its)h(exp)r(orted)f(bindings)h(are)f
(visible)g(in)h(the)g(clien)n(t)g(pac)n(k)-5 b(age.)863
728 y(F)e(or)27 b(example:)p Black Black 739 918 a Fo
(\(define-structur)o(e)37 b(foo)43 b(\(export)d(a)k(c)f(cons\))826
1018 y(\(open)f(scheme\))826 1117 y(\(begin)f(\(define)g(a)i(1\))1131
1217 y(\(define)e(\(b)i(x\))f(\(+)h(a)g(x\)\))1131 1317
y(\(define)e(\(c)i(y\))f(\(*)h(\(b)g(a\))g(y\)\)\)\))739
1516 y(\(define-structur)o(e)37 b(bar)43 b(\(export)d(d\))826
1615 y(\(open)i(scheme)f(foo\))826 1715 y(\(begin)g(\(define)g(\(d)i
(w\))f(\(+)h(a)g(\(c)g(w\)\)\)\)\))739 1899 y Fr(This)38
b(con\014guration)e(de\014nes)j(t)n(w)n(o)e(structures,)j
Fo(foo)d Fr(and)h Fo(bar)p Fr(.)67 b Fo(foo)37 b Fr(is)h(a)g(view)g(on)
g(a)739 1999 y(pac)n(k)-5 b(age)25 b(in)h(whic)n(h)h(the)g
Fo(scheme)d Fr(structure's)h(bindings)i(\(including)g
Fo(define)d Fr(and)i Fo(+)p Fr(\))g(are)739 2098 y(visible,)38
b(together)e(with)g(bindings)h(for)e Fo(a)p Fr(,)j Fo(b)p
Fr(,)h(and)d Fo(c)p Fr(.)62 b Fo(foo)p Fr('s)35 b(in)n(terface)h(is)g
Fo(\(export)41 b(a)739 2198 y(c)i(cons\))p Fr(,)31 b(so)g(of)h(the)g
(bindings)g(in)g(its)g(underlying)f(pac)n(k)-5 b(age,)31
b Fo(foo)g Fr(only)g(exp)r(orts)h(those)739 2298 y(three.)53
b(Similarly)-7 b(,)34 b(structure)f Fo(bar)e Fr(consists)i(of)g(the)g
(binding)g(of)g Fo(d)g Fr(from)g(a)f(pac)n(k)-5 b(age)32
b(in)739 2397 y(whic)n(h)h(b)r(oth)h Fo(scheme)p Fr('s)d(and)j
Fo(foo)p Fr('s)e(bindings)i(are)e(visible.)55 b Fo(foo)p
Fr('s)32 b(binding)i(of)f Fo(cons)f Fr(is)739 2497 y(imp)r(orted)c
(from)f(the)h(Sc)n(heme)f(structure)g(and)h(then)g(re-exp)r(orted.)863
2602 y(A)j(mo)r(dule's)g(b)r(o)r(dy)-7 b(,)31 b(the)g(part)f(follo)n
(wing)f Fo(begin)f Fr(in)j(the)g(ab)r(o)n(v)n(e)e(example,)h(is)h(ev)-5
b(alu-)739 2702 y(ated)24 b(in)h(an)f(isolated)g(lexical)g(scop)r(e)g
(completely)g(sp)r(eci\014ed)h(b)n(y)f(the)h(pac)n(k)-5
b(age)23 b(de\014nition's)739 2802 y Fo(open)30 b Fr(and)h
Fo(access)f Fr(clauses.)48 b(In)31 b(particular,)h(the)g(binding)f(of)h
(the)g(syn)n(tactic)f(op)r(erator)739 2901 y Fo(define-structure)25
b Fr(is)31 b(not)h(visible)f(unless)g(it)h(comes)f(from)g(some)g(op)r
(ened)h(structure.)739 3001 y(Similarly)-7 b(,)25 b(bindings)h(from)f
(the)h Fo(scheme)d Fr(structure)i(aren't)g(visible)g(unless)h(they)f(b)
r(ecome)739 3100 y(so)i(b)n(y)g Fo(scheme)e Fr(\(or)i(an)h(equiv)-5
b(alen)n(t)27 b(structure\))g(b)r(eing)h(op)r(ened.)739
3407 y Fj(4.2)135 b(The)45 b(con\014guration)g(language)739
3600 y Fr(The)25 b(con\014guration)f(language)g(consists)h(of)g
(top-lev)n(el)g(de\014ning)g(forms)g(for)g(mo)r(dules)g(and)739
3699 y(in)n(terfaces.)36 b(Its)28 b(syn)n(tax)e(is)i(giv)n(en)e(in)i
(\014gure)p 0 0 1 TeXcolorrgb 27 w(4.1)p Black(.)863
3805 y(A)c Fo(define-structure)17 b Fr(form)23 b(in)n(tro)r(duces)f(a)h
(binding)h(of)f(a)g(name)g(to)g(a)g(structure.)35 b(A)739
3904 y(structure)28 b(is)g(a)g(view)g(on)g(an)g(underlying)g(pac)n(k)-5
b(age)26 b(whic)n(h)i(is)h(created)e(according)g(to)h(the)739
4004 y(clauses)33 b(of)i(the)f Fo(define-structure)28
b Fr(form.)57 b(Eac)n(h)33 b(structure)h(has)f(an)h(in)n(terface)g
(that)739 4104 y(sp)r(eci\014es)d(whic)n(h)h(bindings)g(in)g(the)g
(structure's)f(underlying)g(pac)n(k)-5 b(age)30 b(can)h(b)r(e)h(seen)g
(via)739 4203 y(that)c(structure)f(in)h(other)f(pac)n(k)-5
b(ages.)863 4309 y(An)22 b Fo(open)d Fr(clause)i(sp)r(eci\014es)f(whic)
n(h)h(structures)g(will)g(b)r(e)g(op)r(ened)g(up)g(for)g(use)g(inside)g
(the)739 4408 y(new)k(pac)n(k)-5 b(age.)34 b(A)n(t)26
b(least)e(one)h(structure)g(m)n(ust)g(b)r(e)g(sp)r(eci\014ed)h(or)e
(else)h(it)g(will)g(b)r(e)h(imp)r(ossi-)739 4508 y(ble)21
b(to)f(write)h(an)n(y)e(useful)i(programs)e(inside)h(the)h(pac)n(k)-5
b(age,)21 b(since)f Fo(define)p Fr(,)g Fo(lambda)p Fr(,)g
Fo(cons)p Fr(,)739 4608 y(etc.)33 b(will)g(b)r(e)g(una)n(v)-5
b(ailable.)52 b(P)n(ac)n(k)-5 b(ages)30 b(t)n(ypically)i(include)h
Fo(scheme)p Fr(,)f(whic)n(h)g(exp)r(orts)h(all)739 4707
y(bindings)22 b(appropriate)e(to)i(Revised)1885 4677
y Fk(5)1945 4707 y Fr(Sc)n(heme,)h(in)f(an)g Fo(open)f
Fr(clause.)34 b(F)-7 b(or)21 b(building)i(struc-)739
4807 y(tures)34 b(that)g(exp)r(ort)f(structures,)i(there)f(is)g(a)g
Fo(defpackage)c Fr(pac)n(k)-5 b(age)32 b(that)j(exp)r(orts)e(the)739
4907 y(op)r(erators)26 b(of)h(the)h(con\014guration)e(language.)35
b(Man)n(y)27 b(other)g(structures,)g(suc)n(h)h(as)f(record)739
5006 y(and)g(hash)h(table)f(facilities,)h(are)e(also)h(a)n(v)-5
b(ailable)26 b(in)i(the)g(Sc)n(heme)g(48)e(implemen)n(tation.)p
Black 2130 5255 a(26)p Black eop end
%%Page: 27 35
TeXDict begin 27 34 bop 0 TeXcolorgray Black Black Black
Black 340 510 a Fn(h)p Fr(con\014guration)p Fn(i)27 b(\000)-14
b(!)27 b(h)p Fr(de\014nition)p Fn(i)1475 480 y Fd(\003)390
609 y Fn(h)p Fr(de\014nition)p Fn(i)i(\000)-14 b(!)99
b Fo(\(define-structure)37 b Fn(h)p Fr(name)p Fn(i)44
b(h)p Fr(in)n(terface)p Fn(i)f(h)p Fr(clause)p Fn(i)2843
579 y Fd(\003)2881 609 y Fo(\))934 709 y Fn(j)100 b Fo
(\(define-structure)o(s)37 b(\(\()p Fn(h)p Fr(name)p
Fn(i)43 b(h)p Fr(in)n(terface)p Fn(i)p Fo(\))2692 679
y Fd(\003)2730 709 y Fo(\))g Fn(h)p Fr(clause)p Fn(i)3099
679 y Fd(\003)3137 709 y Fo(\))934 809 y Fn(j)100 b Fo
(\(define-interface)37 b Fn(h)p Fr(name)p Fn(i)44 b(h)p
Fr(in)n(terface)p Fn(i)o Fo(\))934 908 y Fn(j)100 b Fo(\(define-syntax)
38 b Fn(h)p Fr(name)p Fn(i)44 b(h)p Fr(transformer-sp)r(ec)p
Fn(i)n Fo(\))390 1008 y Fn(h)p Fr(clause)p Fn(i)28 b(\000)-15
b(!)100 b Fo(\(open)42 b Fn(h)p Fr(structure)p Fn(i)1588
978 y Fd(\003)1626 1008 y Fo(\))810 1108 y Fn(j)100 b
Fo(\(access)41 b Fn(h)p Fr(name)p Fn(i)1540 1077 y Fd(\003)1578
1108 y Fo(\))810 1207 y Fn(j)100 b Fo(\(begin)41 b Fn(h)p
Fr(program)p Fn(i)o Fo(\))810 1307 y Fn(j)100 b Fo(\(files)41
b Fn(h)p Fr(\014lesp)r(ec)p Fn(i)1564 1277 y Fd(\003)1602
1307 y Fo(\))810 1406 y Fn(j)100 b Fo(\(optimize)40 b
Fn(h)p Fr(optimize-sp)r(ec)p Fn(i)1925 1376 y Fd(\003)1963
1406 y Fo(\))810 1506 y Fn(j)100 b Fo(\(for-syntax)39
b Fn(h)p Fr(clause)p Fn(i)1738 1476 y Fd(\003)1776 1506
y Fo(\))390 1606 y Fn(h)p Fr(in)n(terface)p Fn(i)28 b(\000)-15
b(!)100 b Fo(\(export)41 b Fn(h)p Fr(item)p Fn(i)1600
1576 y Fd(\003)1638 1606 y Fo(\))902 1705 y Fn(j)100
b(h)p Fr(name)p Fn(i)902 1805 y(j)g Fo(\(compound-interf)o(ace)37
b Fn(h)p Fr(in)n(terface)p Fn(i)2271 1775 y Fd(\003)2309
1805 y Fo(\))390 1905 y Fn(h)p Fr(item)p Fn(i)29 b(\000)-14
b(!)55 b(h)p Fr(name)p Fn(i)1068 2004 y(j)100 b Fo(\()p
Fn(h)p Fr(name)p Fn(i)43 b(h)p Fr(t)n(yp)r(e)p Fn(i)q
Fo(\))1068 2104 y Fn(j)100 b Fo(\(\()p Fn(h)p Fr(name)p
Fn(i)1536 2074 y Fd(\003)1575 2104 y Fo(\))43 b Fn(h)p
Fr(t)n(yp)r(e)p Fn(i)p Fo(\))390 2203 y Fn(h)p Fr(structure)p
Fn(i)28 b(\000)-14 b(!)99 b(h)p Fr(name)p Fn(i)922 2303
y(j)g Fo(\(modify)41 b Fn(h)p Fr(structure)p Fn(i)i(h)p
Fr(mo)r(di\014er)p Fn(i)2192 2273 y Fd(\003)2230 2303
y Fo(\))922 2403 y Fn(j)99 b Fo(\(subset)41 b Fn(h)p
Fr(structure)p Fn(i)i Fo(\()p Fn(h)p Fr(name)p Fn(i)2131
2373 y Fd(\003)2170 2403 y Fo(\)\))922 2502 y Fn(j)99
b Fo(\(with-prefix)39 b Fn(h)p Fr(structure)p Fn(i)k(h)p
Fr(name)p Fn(i)q Fo(\))390 2602 y Fn(h)p Fr(mo)r(di\014er)p
Fn(i)28 b(\000)-14 b(!)100 b Fo(\(expose)40 b Fn(h)p
Fr(name)p Fn(i)1621 2572 y Fd(\003)1659 2602 y Fo(\))891
2702 y Fn(j)100 b Fo(\(hide)41 b Fn(h)p Fr(name)p Fn(i)1533
2671 y Fd(\003)1572 2702 y Fo(\))891 2801 y Fn(j)100
b Fo(\(rename)40 b(\()p Fn(h)p Fr(name)p Fn(i)1664 2813
y Fk(0)1745 2801 y Fn(h)p Fr(name)p Fn(i)2003 2813 y
Fk(1)2040 2801 y Fo(\))2084 2771 y Fd(\003)2122 2801
y Fo(\))891 2901 y Fn(j)100 b Fo(\(alias)41 b(\()p Fn(h)p
Fr(name)p Fn(i)1621 2913 y Fk(0)1701 2901 y Fn(h)p Fr(name)p
Fn(i)1960 2913 y Fk(1)1997 2901 y Fo(\))2041 2871 y Fd(\003)2079
2901 y Fo(\))891 3000 y Fn(j)100 b Fo(\(prefix)40 b Fn(h)p
Fr(name)p Fn(i)q Fo(\))p Black 1001 3179 a Fr(Figure)27
b(4.1:)p 0 TeXcolorgray Black 36 w(The)h(con\014guration)e(language.)p
Black Black 415 3445 a(The)21 b Fo(modify)p Fr(,)e Fo(subset)p
Fr(,)g(and)i Fo(prefix)d Fr(forms)h(pro)r(duce)h(new)h(views)f(on)g
(existing)g(struc-)291 3544 y(tures)30 b(b)n(y)h(renaming)f(or)g
(hiding)h(exp)r(orted)f(names.)47 b Fo(Subset)29 b Fr(returns)h(a)g
(new)h(structure)291 3644 y(that)24 b(exp)r(orts)g(only)g(the)h(listed)
g(names)f(from)g(its)h Fn(h)p Fr(structure)p Fn(i)g Fr(argumen)n(t.)34
b Fo(With-prefix)291 3743 y Fr(returns)23 b(a)h(new)g(structure)g(that)
g(adds)g Fn(h)p Fr(pre\014x)p Fn(i)h Fr(to)f(eac)n(h)f(of)h(the)h
(names)f(exp)r(orted)g(b)n(y)g(the)291 3843 y Fn(h)p
Fr(structure)p Fn(i)j Fr(argumen)n(t.)36 b(F)-7 b(or)27
b(example,)g(if)h(structure)f Fo(s)h Fr(exp)r(orts)f
Fo(a)g Fr(and)g Fo(b)p Fr(,)h(then)p Black Black 291
4009 a Fo(\(subset)40 b(s)j(\(a\)\))291 4176 y Fr(exp)r(orts)26
b(only)j Fo(a)e Fr(and)p Black Black 291 4342 a Fo(\(with-prefix)38
b(s)43 b(p/\))291 4508 y Fr(exp)r(orts)26 b Fo(a)i Fr(as)f
Fo(p/a)f Fr(and)i Fo(b)f Fr(as)g Fo(p/b)p Fr(.)415 4608
y(Both)i Fo(subset)e Fr(and)i Fo(with-prefix)24 b Fr(are)k(simple)i
(macros)d(that)j(expand)e(in)n(to)h(uses)g(of)291 4707
y Fo(modify)p Fr(,)38 b(a)g(more)g(general)f(renaming)g(form.)69
b(In)39 b(a)e Fo(modify)f Fr(structure)i(sp)r(eci\014cation)291
4807 y(the)26 b Fn(h)p Fr(command)p Fn(i)p Fr(s)f(are)g(applied)h(to)f
(the)h(names)f(exp)r(orted)g(b)n(y)h Fn(h)p Fr(structure)p
Fn(i)g Fr(to)f(pro)r(duce)g(a)291 4907 y(new)31 b(set)f(of)h(names)g
(for)f(the)h Fn(h)p Fr(structure)p Fn(i)p Fr('s)g(bindings.)47
b Fo(Expose)28 b Fr(mak)n(es)i(only)g(the)i(listed)291
5006 y(names)26 b(visible.)37 b Fo(Hide)26 b Fr(mak)n(es)g(all)h(but)h
(the)g(listed)f(names)g(visible.)37 b Fo(Rename)24 b
Fr(mak)n(es)j(eac)n(h)p Black 1681 5255 a(27)p Black
eop end
%%Page: 28 36
TeXDict begin 28 35 bop 0 TeXcolorgray Black Black Black
739 523 a Fn(h)p Fr(name)p Fn(i)997 535 y Fk(0)1055 523
y Fr(visible)21 b(as)f Fn(h)p Fr(name)p Fn(i)1658 535
y Fk(1)1716 523 y Fr(name)h(and)f(not)h(visible)g(as)f
Fn(h)p Fr(name)p Fn(i)2829 535 y Fk(0)2887 523 y Fr(,)j(while)e
Fo(alias)d Fr(mak)n(es)739 623 y(eac)n(h)24 b Fn(h)p
Fr(name)p Fn(i)1182 635 y Fk(0)1244 623 y Fr(visible)h(as)g(b)r(oth)h
Fn(h)p Fr(name)p Fn(i)2050 635 y Fk(0)2113 623 y Fr(and)f
Fn(h)p Fr(name)p Fn(i)2530 635 y Fk(1)2567 623 y Fr(.)36
b Fo(Prefix)23 b Fr(adds)i Fn(h)p Fr(name)p Fn(i)h Fr(to)f(the)739
722 y(b)r(eginning)j(of)g(eac)n(h)f(exp)r(orted)g(name.)38
b(The)28 b(mo)r(di\014ers)g(are)f(applied)h(from)f(righ)n(t)h(to)f
(left.)739 822 y(Th)n(us)p Black Black 739 1008 a Fo(\(modify)41
b(scheme)g(\(prefix)f(foo/\))i(\(rename)f(\(car)h(bus\)\)\)\))739
1190 y Fr(mak)n(es)26 b Fo(car)h Fr(a)n(v)-5 b(ailable)26
b(as)h Fo(foo/bus)p Fr(.)863 1295 y(The)h(pac)n(k)-5
b(age's)26 b(b)r(o)r(dy)j(is)e(sp)r(eci\014ed)h(b)n(y)g
Fo(begin)e Fr(and/or)g Fo(files)g Fr(clauses.)37 b Fo(begin)25
b Fr(and)739 1394 y Fo(files)e Fr(ha)n(v)n(e)i(the)g(same)g(seman)n
(tics,)g(except)h(that)g(for)e Fo(begin)g Fr(the)i(text)g(is)f(giv)n
(en)f(directly)739 1494 y(in)32 b(the)g(pac)n(k)-5 b(age)30
b(de\014nition,)j(while)e(for)g Fo(files)f Fr(the)i(text)g(is)f(stored)
g(somewhere)f(in)i(the)739 1593 y(\014le)38 b(system.)66
b(The)37 b(b)r(o)r(dy)h(consists)f(of)g(a)g(Sc)n(heme)h(program,)g
(that)f(is,)j(a)d(sequence)g(of)739 1693 y(de\014nitions)27
b(and)g(expressions)e(to)h(b)r(e)i(ev)-5 b(aluated)26
b(in)h(order.)36 b(In)27 b(practice,)f(w)n(e)g(alw)n(a)n(ys)f(use)739
1793 y Fo(files)h Fr(in)h(preference)g(to)h Fo(begin)p
Fr(;)d Fo(begin)h Fr(exists)h(mainly)h(for)f(exp)r(ository)f(purp)r
(oses.)863 1897 y(A)42 b(name's)f(imp)r(orted)h(binding)f(ma)n(y)g(b)r
(e)h(lexically)f(o)n(v)n(erridden)e(or)i Fq(shadowe)l(d)j
Fr(b)n(y)739 1997 y(de\014ning)38 b(the)h(name)g(using)f(a)g
(de\014ning)h(form)f(suc)n(h)g(as)g Fo(define)e Fr(or)h
Fo(define-syntax)p Fr(.)739 2097 y(This)i(will)h(create)e(a)h(new)h
(binding)g(without)f(ha)n(ving)g(an)n(y)f(e\013ect)i(on)g(the)f
(binding)h(in)739 2196 y(the)32 b(op)r(ened)f(pac)n(k)-5
b(age.)47 b(F)-7 b(or)30 b(example,)i(one)f(can)g(do)g
Fo(\(define)41 b(car)h('chevy\))29 b Fr(without)739 2296
y(a\013ecting)e(the)h(binding)g(of)g(the)g(name)f Fo(car)f
Fr(in)i(the)g Fo(scheme)d Fr(pac)n(k)-5 b(age.)863 2401
y(Assignmen)n(ts)33 b(\(using)g Fo(set!)p Fr(\))e(to)i(imp)r(orted)g
(and)g(unde\014ned)g(v)-5 b(ariables)32 b(are)g(not)h(al-)739
2500 y(lo)n(w)n(ed.)58 b(In)35 b(order)e(to)i Fo(set!)e
Fr(a)i(top-lev)n(el)f(v)-5 b(ariable,)35 b(the)h(pac)n(k)-5
b(age)33 b(b)r(o)r(dy)i(m)n(ust)g(con)n(tain)739 2600
y(a)i Fo(define)e Fr(form)i(de\014ning)g(that)h(v)-5
b(ariable.)65 b(Applied)38 b(to)f(bindings)g(from)g(the)h
Fo(scheme)739 2700 y Fr(structure,)31 b(this)h(restriction)e(is)h
(compatible)g(with)g(the)h(requiremen)n(ts)e(of)h(the)g(Revised)3566
2669 y Fk(5)739 2799 y Fr(Sc)n(heme)c(rep)r(ort.)863
2904 y(It)d(is)f(an)h(error)d(for)i(t)n(w)n(o)f(of)i(a)f(pac)n(k)-5
b(age's)21 b(op)r(ened)j(structures)e(to)i(exp)r(ort)f(t)n(w)n(o)f
(di\013eren)n(t)739 3003 y(bindings)36 b(for)h(the)g(same)f(name.)63
b(Ho)n(w)n(ev)n(er,)37 b(the)g(curren)n(t)f(implemen)n(tation)h(do)r
(es)f(not)739 3103 y(c)n(hec)n(k)e(for)h(this)g(situation;)k(a)34
b(name's)h(binding)g(is)g(alw)n(a)n(ys)e(tak)n(en)i(from)f(the)i
(structure)739 3203 y(that)28 b(is)f(listed)h(\014rst)f(within)i(the)f
Fo(open)e Fr(clause.)36 b(This)28 b(ma)n(y)e(b)r(e)i(\014xed)g(in)g
(the)g(future.)863 3307 y(File)f(names)f(in)h(a)f Fo(files)f
Fr(clause)h(can)g(b)r(e)h(sym)n(b)r(ols,)f(strings,)g(or)g(lists)g
(\(Maclisp-st)n(yle)739 3407 y(\\namelists"\).)72 b(A)40
b(\\)p Fo(.scm)p Fr(")e(\014le)h(t)n(yp)r(e)h(su\016x)g(is)g(assumed.)
73 b(Sym)n(b)r(ols)39 b(are)g(con)n(v)n(erted)739 3507
y(to)31 b(\014le)g(names)g(b)n(y)g(con)n(v)n(erting)e(to)i(upp)r(er)g
(or)g(lo)n(w)n(er)e(case)h(as)h(appropriate)e(for)i(the)g(host)739
3606 y(op)r(erating)18 b(system.)34 b(A)19 b(namelist)g(is)g(an)g(op)r
(erating-system-indep)r(enden)n(t)f(w)n(a)n(y)g(to)h(sp)r(ecify)739
3706 y(a)31 b(\014le)h(obtained)g(from)g(a)f(sub)r(directory)-7
b(.)49 b(F)-7 b(or)31 b(example,)i(the)f(namelist)g Fo(\(rts)42
b(record\))739 3806 y Fr(sp)r(eci\014es)27 b(the)h(\014le)g
Fo(record.scm)c Fr(in)k(the)f Fo(rts)g Fr(sub)r(directory)-7
b(.)863 3910 y(If)22 b(the)f Fo(define-structur)o(e)15
b Fr(form)20 b(w)n(as)g(itself)h(obtained)g(from)f(a)g(\014le,)j(then)e
(\014le)g(names)739 4010 y(in)29 b Fo(files)f Fr(clauses)g(are)g(in)n
(terpreted)h(relativ)n(e)f(to)h(the)h(directory)e(in)i(whic)n(h)f(the)h
(\014le)f(con-)739 4110 y(taining)34 b(the)g Fo(define-structure)28
b Fr(form)34 b(w)n(as)f(found.)57 b(Y)-7 b(ou)34 b(can't)g(at)g(presen)
n(t)g(put)h(an)739 4209 y(absolute)27 b(path)h(name)f(in)h(the)g
Fo(files)d Fr(list.)739 4511 y Fj(4.3)135 b(In)l(terfaces)739
4702 y Fo(define-interface)863 4807 y Fr(An)24 b(in)n(terface)f(can)f
(b)r(e)i(though)n(t)f(of)g(as)g(the)g(t)n(yp)r(e)h(of)f(a)g(structure.)
35 b(In)23 b(its)g(basic)g(form)g(it)739 4907 y(is)h(just)h(a)f(list)g
(of)h(v)-5 b(ariable)23 b(names,)i(written)f Fo(\(export)41
b Fq(name)50 b Fo(...\))p Fr(.)34 b(Ho)n(w)n(ev)n(er,)23
b(in)i(place)739 5006 y(of)j(a)f(name)h(one)f(ma)n(y)g(write)h
Fo(\()p Fq(name)50 b(typ)l(e)6 b Fo(\))p Fr(,)28 b(indicating)f(the)i
(t)n(yp)r(e)f(of)34 b Fq(name)6 b Fr('s)28 b(binding.)p
Black 2130 5255 a(28)p Black eop end
%%Page: 29 37
TeXDict begin 29 36 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(The)26 b(t)n(yp)r(e)h(\014eld)g(is)g(optional,)f(except)g
(that)h(exp)r(orted)g(macros)e(m)n(ust)i(b)r(e)g(indicated)f(with)291
623 y(t)n(yp)r(e)h Fo(:syntax)p Fr(.)415 722 y(In)n(terfaces)g(ma)n(y)g
(b)r(e)h(either)f(anon)n(ymous,)f(as)h(in)h(the)g(example)f(in)h(the)g
(in)n(tro)r(duction,)291 822 y(or)e(they)i(ma)n(y)f(b)r(e)h(giv)n(en)f
(names)g(b)n(y)g(a)g Fo(define-interface)21 b Fr(form,)28
b(for)f(example)p Black Black 291 974 a Fo(\(define-interfa)o(ce)37
b(foo-interface)h(\(export)j(a)i(c)g(cons\)\))291 1074
y(\(define-structu)o(re)37 b(foo)42 b(foo-interface)d(...\))291
1227 y Fr(In)23 b(principle,)h(in)n(terfaces)e(needn't)i(ev)n(er)e(b)r
(e)h(named.)36 b(If)23 b(an)g(in)n(terface)f(had)h(to)g(b)r(e)h(giv)n
(en)e(at)291 1326 y(the)i(p)r(oin)n(t)g(of)g(a)g(structure's)f(use)h
(as)f(w)n(ell)h(as)f(at)h(the)g(p)r(oin)n(t)g(of)g(its)g(de\014nition,)
i(it)e(w)n(ould)g(b)r(e)291 1426 y(imp)r(ortan)n(t)i(to)h(name)g(in)n
(terfaces)f(in)i(order)e(to)h(a)n(v)n(oid)e(ha)n(ving)h(to)h(write)g
(them)h(out)f(t)n(wice,)291 1526 y(with)h(risk)f(of)g(mismatc)n(h)g
(should)h(the)g(in)n(terface)f(ev)n(er)f(c)n(hange.)36
b(But)28 b(they)g(don't.)415 1625 y(Still,)g(there)g(are)e(sev)n(eral)g
(reasons)g(to)h(use)h Fo(define-interface)o Fr(:)p Black
392 1778 a(1.)p Black 41 w(It)j(is)f(imp)r(ortan)n(t)g(to)g(separate)e
(the)j(in)n(terface)e(de\014nition)i(from)f(the)g(pac)n(k)-5
b(age)29 b(def-)498 1877 y(initions)36 b(when)g(there)g(are)f(m)n
(ultiple)i(distinct)g(structures)e(that)h(ha)n(v)n(e)f(the)h(same)498
1977 y(in)n(terface)27 b(|)h(that)g(is,)f(m)n(ultiple)h(implemen)n
(tations)g(of)f(the)h(same)f(abstraction.)p Black 392
2136 a(2.)p Black 41 w(It)34 b(is)f(conceptually)g(cleaner,)g(and)h
(often)f(useful)h(for)f(do)r(cumen)n(tation)g(purp)r(oses,)498
2236 y(to)i(separate)e(a)h(mo)r(dule's)h(sp)r(eci\014cation)g(\(in)n
(terface\))f(from)h(its)g(implemen)n(tation)498 2336
y(\(pac)n(k)-5 b(age\).)p Black 392 2495 a(3.)p Black
41 w(Our)39 b(exp)r(erience)h(is)f(that)h(con\014gurations)e(that)j
(are)d(separated)h(in)n(to)h(in)n(terface)498 2594 y(de\014nitions)g
(and)g(pac)n(k)-5 b(age)38 b(de\014nitions)j(are)e(easier)f(to)i(read;)
45 b(the)c(long)e(lists)h(of)498 2694 y(exp)r(orted)27
b(bindings)h(just)g(get)f(in)h(the)g(w)n(a)n(y)f(most)g(of)h(the)g
(time.)415 2847 y(The)j Fo(compound-interfac)o(e)25 b
Fr(op)r(erator)30 b(forms)h(an)g(in)n(terface)f(that)i(is)f(the)h
(union)f(of)291 2946 y(t)n(w)n(o)26 b(or)h(more)g(comp)r(onen)n(t)g(in)
n(terfaces.)36 b(F)-7 b(or)27 b(example,)p Black Black
291 3099 a Fo(\(define-interfa)o(ce)37 b(bar-interface)378
3198 y(\(compound-interf)o(ac)o(e)g(foo-interface)i(\(export)h
(mumble\)\)\))291 3351 y Fr(de\014nes)27 b Fo(bar-interface)22
b Fr(to)28 b(b)r(e)g Fo(foo-interface)22 b Fr(with)28
b(the)g(name)g Fo(mumble)d Fr(added.)291 3623 y Fj(4.4)135
b(Macros)291 3804 y Fr(Hygienic)32 b(macros,)g(as)g(describ)r(ed)h(in)g
([)p 0 0 1 TeXcolorrgb(2)p Black -1 w(,)p 0 0 1 TeXcolorrgb
33 w(3)p Black(],)h(are)e(implemen)n(ted.)52 b(Structures)32
b(ma)n(y)g(ex-)291 3904 y(p)r(ort)26 b(macros;)g(auxiliary)g(names)g
(in)n(tro)r(duced)h(in)n(to)g(the)h(expansion)e(are)g(resolv)n(ed)f(in)
j(the)291 4004 y(en)n(vironmen)n(t)e(of)i(the)g(macro's)e
(de\014nition.)415 4103 y(F)-7 b(or)29 b(example,)h(the)g
Fo(scheme)d Fr(structure's)h Fo(delay)g Fr(macro)g(is)i(de\014ned)g(b)n
(y)f(the)h(rewrite)291 4203 y(rule)p Black Black 291
4356 a Fo(\(delay)41 b Fq(exp)5 b Fo(\))87 b Fr(=)-14
b Fn(\))87 b Fo(\(make-promise)38 b(\(lambda)j(\(\))h
Fq(exp)5 b Fo(\)\).)291 4508 y Fr(The)19 b(v)-5 b(ariable)18
b Fo(make-promise)c Fr(is)19 b(de\014ned)g(in)g(the)h
Fo(scheme)c Fr(structure's)j(underlying)f(pac)n(k-)291
4608 y(age,)30 b(but)h(is)g(not)g(exp)r(orted.)45 b(A)31
b(use)g(of)f(the)h Fo(delay)e Fr(macro,)h(ho)n(w)n(ev)n(er,)g(alw)n(a)n
(ys)e(accesses)291 4707 y(the)d(correct)e(de\014nition)i(of)f
Fo(make-promise)p Fr(.)31 b(Similarly)-7 b(,)25 b(the)g
Fo(case)e Fr(macro)g(expands)h(in)n(to)291 4807 y(uses)j(of)h
Fo(cond)p Fr(,)e Fo(eqv?)p Fr(,)g(and)i(so)f(on.)37 b(These)27
b(names)h(are)e(exp)r(orted)i(b)n(y)f Fo(scheme)p Fr(,)f(but)i(their)
291 4907 y(correct)i(bindings)i(will)h(b)r(e)f(found)g(ev)n(en)g(if)g
(they)h(are)e(shado)n(w)n(ed)f(b)n(y)i(de\014nitions)g(in)h(the)291
5006 y(clien)n(t)27 b(pac)n(k)-5 b(age.)p Black 1681
5255 a(29)p Black eop end
%%Page: 30 38
TeXDict begin 30 37 bop 0 TeXcolorgray Black Black Black
739 523 a Fj(4.5)135 b(Higher-order)46 b(mo)t(dules)739
705 y Fr(There)30 b(are)f Fo(define-module)c Fr(and)30
b Fo(define)e Fr(forms)i(for)g(de\014ning)g(mo)r(dules)g(that)h(are)e
(in-)739 805 y(tended)j(to)f(b)r(e)h(instan)n(tiated)f(m)n(ultiple)h
(times.)49 b(But)32 b(these)g(are)e(prett)n(y)h(kludgey)g(|)h(for)739
904 y(example,)c(compiled)g(co)r(de)g(isn't)h(shared)e(b)r(et)n(w)n
(een)h(the)g(instan)n(tiations)g(|)g(so)g(w)n(e)g(w)n(on't)739
1004 y(describ)r(e)d(them)h(y)n(et.)36 b(If)25 b(y)n(ou)g(m)n(ust)g
(kno)n(w,)g(\014gure)g(it)h(out)f(from)g(the)h(follo)n(wing)e(grammar.)
p Black Black 999 1142 a Fn(h)p Fr(de\014nition)p Fn(i)k(\000)-14
b(!)100 b Fo(\(define-module)37 b(\()p Fn(h)p Fr(name)p
Fn(i)44 b Fo(\()p Fn(h)p Fr(name)p Fn(i)f(h)p Fr(in)n(terface)p
Fn(i)p Fo(\))3428 1112 y Fd(\003)3466 1142 y Fo(\))1832
1242 y Fn(h)p Fr(de\014nition)p Fn(i)2238 1212 y Fd(\003)1832
1342 y Fn(h)p Fr(name)p Fn(i)p Fo(\))1543 1441 y Fn(j)100
b Fo(\(define)40 b Fn(h)p Fr(name)p Fn(i)k Fo(\()p Fn(h)p
Fr(name)p Fn(i)g(h)p Fr(name)p Fn(i)2920 1411 y Fd(\003)2958
1441 y Fo(\)\))739 1683 y Fj(4.6)135 b(Compiling)46 b(and)f(linking)739
1865 y Fr(Sc)n(heme)24 b(48)f(has)g(a)g(static)h(link)n(er)f(that)i
(pro)r(duces)e(stand-alone)f(heap)i(images)f(from)g(mo)r(d-)739
1964 y(ule)j(descriptions.)36 b(The)26 b(programmer)e(sp)r(eci\014es)i
(a)g(particular)f(pro)r(cedure)g(in)h(a)g(particu-)739
2064 y(lar)j(structure)g(to)g(b)r(e)h(the)g(image's)f(startup)g(pro)r
(cedure)g(\(en)n(try)g(p)r(oin)n(t\),)i(and)e(the)h(link)n(er)739
2164 y(traces)d(dep)r(endency)i(links)f(as)f(giv)n(en)g(b)n(y)h
Fo(open)f Fr(and)h Fo(access)d Fr(clauses)j(to)g(determine)g(the)739
2263 y(comp)r(osition)f(of)g(the)h(heap)g(image.)863
2363 y(There)23 b(is)g(not)g(curren)n(tly)f(an)n(y)g(pro)n(vision)f
(for)i(separate)e(compilation;)j(the)g(only)e(input)739
2462 y(to)i(the)h(static)f(link)n(er)f(is)i(source)e(co)r(de.)35
b(Ho)n(w)n(ev)n(er,)23 b(it)i(will)f(not)h(b)r(e)f(di\016cult)h(to)g
(implemen)n(t)739 2562 y(separate)c(compilation.)35 b(The)23
b(unit)h(of)f(compilation)f(is)h(one)f(mo)r(dule)i(\(not)f(one)f
(\014le\).)36 b(An)n(y)739 2662 y(op)r(ened)19 b(or)f(accessed)f
(structures)h(from)g(whic)n(h)h(macros)e(are)h(obtained)g(m)n(ust)h(b)r
(e)g(pro)r(cessed)739 2761 y(to)28 b(the)h(exten)n(t)f(of)g(extracting)
f(its)i(macro)e(de\014nitions.)39 b(The)28 b(compiler)g(kno)n(ws)f
(from)h(the)739 2861 y(in)n(terface)34 b(of)h(an)g(op)r(ened)g(or)f
(accessed)f(structure)i(whic)n(h)g(of)g(its)g(exp)r(orts)f(are)g
(macros.)739 2961 y(Except)f(for)f(macros,)i(a)f(mo)r(dule)g(ma)n(y)g
(b)r(e)g(compiled)h(without)f(an)n(y)g(kno)n(wledge)f(of)h(the)739
3060 y(implemen)n(tation)f(of)g(its)h(op)r(ened)f(and)g(accessed)f
(structures.)50 b(Ho)n(w)n(ev)n(er,)32 b(in)n(ter-mo)r(dule)739
3160 y(optimization)27 b(ma)n(y)g(b)r(e)h(a)n(v)-5 b(ailable)26
b(as)h(an)h(option.)863 3259 y(The)23 b(main)g(di\016cult)n(y)f(with)h
(separate)f(compilation)g(is)g(resolution)f(of)i(auxiliary)e(bind-)739
3359 y(ings)26 b(in)n(tro)r(duced)h(in)n(to)f(macro)g(expansions.)35
b(The)27 b(mo)r(dule)g(compiler)f(m)n(ust)h(transmit)f(to)739
3459 y(the)j(loader)e(or)g(link)n(er)h(the)g(searc)n(h)f(path)i(b)n(y)f
(whic)n(h)g(suc)n(h)g(bindings)g(are)g(to)g(b)r(e)h(resolv)n(ed.)739
3558 y(In)f(the)g(case)f(of)h(the)g Fo(delay)e Fr(macro's)g(auxiliary)g
Fo(make-promise)d Fr(\(see)28 b(example)f(ab)r(o)n(v)n(e\),)739
3658 y(the)g(loader)e(or)h(link)n(er)g(needs)h(to)g(kno)n(w)e(that)j
(the)f(desired)f(binding)h(of)f Fo(make-promise)c Fr(is)739
3758 y(the)30 b(one)f(apparen)n(t)f(in)h Fo(delay)p Fr('s)e(de\014ning)
j(pac)n(k)-5 b(age,)28 b(not)h(in)h(the)g(pac)n(k)-5
b(age)27 b(b)r(eing)j(loaded)739 3857 y(or)d(link)n(ed.)739
4127 y Fj(4.7)135 b(Seman)l(tics)46 b(of)f(con\014guration)g(m)l
(utation)739 4309 y Fr(During)28 b(program)e(dev)n(elopmen)n(t)h(it)i
(is)f(often)g(desirable)f(to)h(mak)n(e)f(c)n(hanges)g(to)h(pac)n(k)-5
b(ages)739 4408 y(and)25 b(in)n(terfaces.)36 b(In)26
b(static)f(languages)f(it)i(ma)n(y)f(b)r(e)h(necessary)e(to)i
(recompile)e(and)i(re-link)739 4508 y(a)21 b(program)f(in)j(order)d
(for)i(suc)n(h)f(c)n(hanges)g(to)h(b)r(e)g(re\015ected)g(in)g(a)g
(running)f(system.)35 b(Ev)n(en)21 b(in)739 4608 y(in)n(teractiv)n(e)c
(Common)i(Lisp)f(implemen)n(tations,)j(a)d(c)n(hange)g(to)h(a)f(pac)n
(k)-5 b(age's)17 b(exp)r(orts)h(often)739 4707 y(requires)33
b(reloading)g(clien)n(ts)i(that)g(ha)n(v)n(e)e(already)g(men)n(tioned)i
(names)f(whose)g(bindings)739 4807 y(c)n(hange.)62 b(Once)36
b Fo(read)f Fr(resolv)n(es)f(a)i(use)g(of)h(a)f(name)g(to)g(a)g(sym)n
(b)r(ol,)i(that)f(resolution)e(is)739 4907 y(\014xed,)j(so)d(a)h(c)n
(hange)f(in)h(the)g(w)n(a)n(y)f(that)h(a)g(name)g(resolv)n(es)e(to)i(a)
f(sym)n(b)r(ol)h(can)f(only)h(b)r(e)739 5006 y(re\015ected)27
b(b)n(y)h(re-)p Fo(read)p Fr(ing)c(all)k(suc)n(h)f(references.)p
Black 2130 5255 a(30)p Black eop end
%%Page: 31 39
TeXDict begin 31 38 bop 0 TeXcolorgray Black Black Black
415 523 a Fr(The)19 b(Sc)n(heme)g(48)f(dev)n(elopmen)n(t)g(en)n
(vironmen)n(t)g(supp)r(orts)h(rapid)f(turnaround)g(in)h(mo)r(d-)291
623 y(ular)25 b(program)g(dev)n(elopmen)n(t)h(b)n(y)g(allo)n(wing)f(m)n
(utations)i(to)f(a)g(program's)e(con\014guration,)291
722 y(and)j(giving)g(a)g(clear)f(seman)n(tics)h(to)g(suc)n(h)h(m)n
(utations.)36 b(The)28 b(rule)f(is)g(that)h(v)-5 b(ariable)27
b(bind-)291 822 y(ings)33 b(in)h(a)g(running)f(program)f(are)h(alw)n(a)
n(ys)f(resolv)n(ed)g(according)h(to)g(curren)n(t)g(structure)291
922 y(and)28 b(in)n(terface)g(bindings,)h(ev)n(en)g(when)f(these)h
(bindings)g(c)n(hange)f(as)g(a)g(result)g(of)h(edits)g(to)291
1021 y(the)f(con\014guration.)35 b(F)-7 b(or)27 b(example,)g(consider)g
(the)h(follo)n(wing:)p Black Black 291 1189 a Fo(\(define-interfa)o(ce)
37 b(foo-interface)h(\(export)j(a)i(c\)\))291 1289 y(\(define-structu)o
(re)37 b(foo)42 b(foo-interface)378 1389 y(\(open)f(scheme\))378
1488 y(\(begin)g(\(define)g(a)i(1\))683 1588 y(\(define)e(\(b)h(x\))h
(\(+)g(a)g(x\)\))683 1687 y(\(define)e(\(c)h(y\))h(\(*)g(\(b)g(a\))f
(y\)\)\)\))291 1787 y(\(define-structu)o(re)37 b(bar)42
b(\(export)f(d\))378 1887 y(\(open)g(scheme)g(foo\))378
1986 y(\(begin)g(\(define)g(\(d)h(w\))h(\(+)g(\(b)g(w\))f(a\)\)\)\))291
2154 y Fr(This)24 b(program)f(has)h(a)g(bug.)36 b(The)25
b(v)-5 b(ariable)23 b Fo(b)p Fr(,)i(whic)n(h)g(is)f(free)h(in)g(the)g
(de\014nition)g(of)f Fo(d)p Fr(,)h(has)291 2254 y(no)30
b(binding)i(in)f Fo(bar)p Fr('s)f(pac)n(k)-5 b(age.)46
b(Supp)r(ose)31 b(that)h Fo(b)f Fr(w)n(as)f(supp)r(osed)h(to)g(b)r(e)g
(exp)r(orted)g(b)n(y)291 2353 y Fo(foo)p Fr(,)g(but)h(w)n(as)f(omitted)
h(from)f Fo(foo-interface)26 b Fr(b)n(y)31 b(mistak)n(e.)48
b(It)32 b(is)g(not)f(necessary)f(to)291 2453 y(re-pro)r(cess)23
b Fo(bar)h Fr(or)g(an)n(y)g(of)i Fo(foo)p Fr('s)e(other)g(clien)n(ts)h
(at)g(this)h(p)r(oin)n(t.)36 b(One)25 b(need)g(only)g(c)n(hange)291
2552 y Fo(foo-interface)c Fr(and)26 b(inform)g(the)h(dev)n(elopmen)n(t)
f(system)h(of)f(that)h(c)n(hange)e(\(using,)i(sa)n(y)-7
b(,)291 2652 y(an)33 b(appropriate)e(Emacs)h(command\),)j(and)e
Fo(foo)p Fr('s)f(binding)i(of)f Fo(b)g Fr(will)g(b)r(e)h(found)g(when)
291 2752 y(pro)r(cedure)26 b Fo(d)h Fr(is)h(called.)415
2852 y(Similarly)-7 b(,)23 b(it)g(is)f(also)f(p)r(ossible)h(to)g
(replace)f(a)h(structure;)i(clien)n(ts)e(of)g(the)g(old)g(structure)291
2952 y(will)k(b)r(e)h(mo)r(di\014ed)g(so)f(that)h(they)g(see)f
(bindings)g(from)h(the)f(new)h(one.)36 b(Shado)n(wing)26
b(is)g(also)291 3051 y(supp)r(orted)h(in)h(the)g(same)f(w)n(a)n(y)-7
b(.)36 b(Supp)r(ose)28 b(that)g(a)f(clien)n(t)h(pac)n(k)-5
b(age)26 b Fc(C)34 b Fr(op)r(ens)27 b(a)g(structure)291
3151 y Fo(foo)32 b Fr(that)i(exp)r(orts)f(a)h(name)f
Fo(x)p Fr(,)i(and)f Fo(foo)p Fr('s)f(implemen)n(tation)g(obtains)h(the)
g(binding)g(of)291 3250 y Fo(x)g Fr(as)g(an)h(imp)r(ort)g(from)g(some)f
(other)g(structure)h Fo(bar)p Fr(.)57 b(Then)35 b Fc(C)42
b Fr(will)35 b(see)f(the)i(binding)291 3350 y(from)31
b Fo(bar)p Fr(.)46 b(If)32 b(one)f(then)h(alters)e Fo(foo)g
Fr(so)h(that)g(it)h(shado)n(ws)e Fo(bar)p Fr('s)g(binding)h(of)h
Fo(x)f Fr(with)g(a)291 3450 y(de\014nition)g(of)g(its)f(o)n(wn,)i(then)
f(pro)r(cedures)e(in)i Fc(C)38 b Fr(that)31 b(reference)f
Fo(x)g Fr(will)h(automatically)291 3549 y(see)c Fo(foo)p
Fr('s)f(de\014nition)i(instead)f(of)h(the)g(one)f(from)g
Fo(bar)g Fr(that)h(they)g(sa)n(w)e(earlier.)415 3649
y(This)31 b(seman)n(tics)g(migh)n(t)g(app)r(ear)f(to)h(require)f(a)h
(large)f(amoun)n(t)g(of)h(computation)g(on)291 3749 y(ev)n(ery)23
b(v)-5 b(ariable)23 b(reference:)35 b(The)24 b(sp)r(eci\014ed)h(b)r
(eha)n(vior)e(requires)g(scanning)h(the)h(pac)n(k)-5
b(age's)291 3849 y(list)23 b(of)g(op)r(ened)f(structures,)i(examining)e
(their)h(in)n(terfaces,)g(on)f(ev)n(ery)g(v)-5 b(ariable)22
b(reference,)291 3948 y(not)29 b(just)g(at)g(compile)g(time.)42
b(Ho)n(w)n(ev)n(er,)28 b(the)i(dev)n(elopmen)n(t)e(en)n(vironmen)n(t)g
(uses)h(cac)n(hing)291 4048 y(with)f(cac)n(he)e(in)n(v)-5
b(alidation)27 b(to)h(mak)n(e)f(v)-5 b(ariable)26 b(references)h(fast.)
291 4325 y Fj(4.8)135 b(Command)45 b(pro)t(cessor)g(supp)t(ort)291
4508 y Fr(While)24 b(it)h(is)e(p)r(ossible)h(to)g(use)g(the)g(Sc)n
(heme)g(48)f(static)h(link)n(er)f(for)h(program)d(dev)n(elopmen)n(t,)
291 4608 y(it)30 b(is)h(far)f(more)f(con)n(v)n(enien)n(t)h(to)g(use)g
(the)h(dev)n(elopmen)n(t)f(en)n(vironmen)n(t,)g(whic)n(h)g(supp)r(orts)
291 4707 y(rapid)25 b(turnaround)g(for)h(program)e(c)n(hanges.)34
b(The)27 b(programmer)c(in)n(teracts)i(with)i(the)f(de-)291
4807 y(v)n(elopmen)n(t)21 b(en)n(vironmen)n(t)g(through)g(a)g
Fq(c)l(ommand)k(pr)l(o)l(c)l(essor)p Fr(.)36 b(The)22
b(command)f(pro)r(cessor)291 4907 y(is)f(lik)n(e)g(the)h(usual)f(Lisp)g
(read-ev)-5 b(al-prin)n(t)18 b(lo)r(op)i(in)h(that)g(it)f(accepts)g(Sc)
n(heme)g(forms)g(to)g(ev)-5 b(al-)291 5006 y(uate.)36
b(Ho)n(w)n(ev)n(er,)26 b(all)h(meta-lev)n(el)f(op)r(erations,)g(suc)n
(h)h(as)g(exiting)g(the)h(Sc)n(heme)f(system)g(or)p Black
1681 5255 a(31)p Black eop end
%%Page: 32 40
TeXDict begin 32 39 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(requests)25 b(for)h(trace)f(output,)i(are)e(handled)h(b)n
(y)g Fq(c)l(ommands,)i Fr(whic)n(h)e(are)f(lexically)g(distin-)739
623 y(guished)h(from)g(Sc)n(heme)g(forms.)36 b(This)27
b(arrangemen)n(t)d(is)i(b)r(orro)n(w)n(ed)f(from)h(the)h(Sym)n(b)r
(olics)739 722 y(Lisp)c(Mac)n(hine)g(system,)i(and)e(is)h(reminiscen)n
(t)f(of)g(non-Lisp)g(debuggers.)34 b(Commands)23 b(are)739
822 y(a)35 b(little)h(easier)e(to)h(t)n(yp)r(e)g(than)g(Sc)n(heme)g
(forms)g(\(no)g(paren)n(theses,)h(so)f(y)n(ou)f(don't)h(ha)n(v)n(e)739
922 y(to)c(shift\),)j(but)e(more)f(imp)r(ortan)n(tly)-7
b(,)32 b(making)f(them)h(distinct)h(from)e(Sc)n(heme)g(forms)g(en-)739
1021 y(sures)d(that)i(programs')d(namespaces)h(aren't)h(cluttered)h
(with)f(inappropriate)f(bindings.)739 1121 y(Equiv)-5
b(alen)n(tly)e(,)30 b(the)h(command)f(set)g(is)g(a)n(v)-5
b(ailable)29 b(for)h(use)g(regardless)e(of)i(what)g(bindings)739
1220 y(happ)r(en)35 b(to)f(b)r(e)h(visible)g(in)g(the)g(curren)n(t)f
(program.)55 b(This)35 b(is)g(esp)r(ecially)f(imp)r(ortan)n(t)g(in)739
1320 y(conjunction)29 b(with)h(the)f(mo)r(dule)h(system,)f(whic)n(h)g
(puts)h(strict)f(con)n(trols)e(on)i(visibilit)n(y)g(of)739
1420 y(bindings.)863 1519 y(The)f(Sc)n(heme)g(48)f(command)g(pro)r
(cessor)e(supp)r(orts)j(the)g(mo)r(dule)g(system)f(with)h(a)g(v)-5
b(a-)739 1619 y(riet)n(y)29 b(of)g(sp)r(ecial)h(commands.)42
b(F)-7 b(or)29 b(commands)g(that)h(require)e(structure)h(names,)h
(these)739 1719 y(names)g(are)f(resolv)n(ed)g(in)i(a)f(designated)g
(con\014guration)f(pac)n(k)-5 b(age)28 b(that)j(is)f(distinct)i(from)
739 1818 y(the)26 b(curren)n(t)e(pac)n(k)-5 b(age)24
b(for)h(ev)-5 b(aluating)24 b(Sc)n(heme)h(forms)g(giv)n(en)g(to)g(the)h
(command)e(pro)r(ces-)739 1918 y(sor.)54 b(The)33 b(command)g(pro)r
(cessor)f(in)n(terprets)g(Sc)n(heme)i(forms)f(in)h(a)f(particular)f
(curren)n(t)739 2017 y(pac)n(k)-5 b(age,)30 b(and)i(there)f(are)f
(commands)g(that)i(mo)n(v)n(e)e(the)h(command)g(pro)r(cessor)e(b)r(et)n
(w)n(een)739 2117 y(di\013eren)n(t)f(pac)n(k)-5 b(ages.)863
2217 y(Commands)41 b(are)f(in)n(tro)r(duced)h(b)n(y)g(a)g(comma)f(\()p
Fo(,)p Fr(\))45 b(and)c(end)g(at)g(the)h(end)f(of)g(line.)739
2316 y(The)30 b(command)g(pro)r(cessor's)e(prompt)i(consists)f(of)h
(the)h(name)f(of)g(the)g(curren)n(t)g(pac)n(k)-5 b(age)739
2416 y(follo)n(w)n(ed)26 b(b)n(y)i(a)f(greater-than)e(\()p
Fo(>)p Fr(\).)p Black Black 780 2569 a Fo(,open)42 b
Fq(structur)l(e)1370 2539 y Fd(\003)946 2669 y Fr(The)33
b Fo(,open)e Fr(command)h(op)r(ens)h(new)g(structures)f(in)h(the)g
(curren)n(t)f(pac)n(k)-5 b(age,)33 b(as)f(if)946 2768
y(the)e(pac)n(k)-5 b(age's)28 b(de\014nition's)h Fo(open)f
Fr(clause)h(had)g(listed)h Fq(structur)l(e)6 b Fr(.)40
b(As)30 b(with)g Fo(open)946 2868 y Fr(clauses)d(the)h(visible)g(names)
f(can)g(b)r(e)h(mo)r(di\014ed,)g(as)f(in)p Black Black
946 3038 a Fo(,open)42 b(\(subset)f(foo)h(\(bar)g(baz\)\))946
3208 y Fr(whic)n(h)28 b(only)f(mak)n(es)g(the)h Fo(bar)e
Fr(and)i Fo(baz)e Fr(bindings)i(from)f(structure)g Fo(foo)f
Fr(visible.)p Black Black 780 3362 a Fo(,config)946 3461
y Fr(The)i Fo(,config)d Fr(command)i(sets)h(the)g(command)f(pro)r
(cessor's)e(curren)n(t)i(pac)n(k)-5 b(age)26 b(to)946
3561 y(b)r(e)40 b(the)f(curren)n(t)e(con\014guration)g(pac)n(k)-5
b(age.)69 b(F)-7 b(orms)38 b(en)n(tered)g(at)g(this)h(p)r(oin)n(t)g
(are)946 3661 y(in)n(terpreted)28 b(as)e(b)r(eing)i(con\014guration)e
(language)g(forms,)h(not)h(Sc)n(heme)f(forms.)p Black
Black 780 3815 a Fo(,config)41 b Fq(c)l(ommand)946 3915
y Fr(This)d(form)f(of)g(the)h Fo(,config)c Fr(command)j(executes)g
(another)f(command)h(in)h(the)946 4014 y(curren)n(t)27
b(con\014guration)f(pac)n(k)-5 b(age.)35 b(F)-7 b(or)27
b(example,)p Black Black 946 4184 a Fo(,config)41 b(,load)h(foo.scm)946
4354 y Fr(in)n(terprets)29 b(con\014guration)e(language)g(forms)h(from)
h(the)g(\014le)g Fo(foo.scm)d Fr(in)k(the)f(cur-)946
4453 y(ren)n(t)f(con\014guration)e(pac)n(k)-5 b(age.)p
Black Black 780 4608 a Fo(,config-package-i)o(s)38 b
Fq(struct-name)946 4707 y Fr(The)23 b Fo(,config-package)o(-is)15
b Fr(command)22 b(designates)f(a)h(new)g(con\014guration)e(pac)n(k-)946
4807 y(age)29 b(for)h(use)g(b)n(y)f(the)h Fo(,config)e
Fr(command)h(and)h(resolution)f(of)36 b Fq(struct-name)6
b Fr(s)29 b(for)946 4907 y(other)h(commands)g(suc)n(h)g(as)f
Fo(,in)g Fr(and)h Fo(,open)p Fr(.)43 b(See)30 b(section)p
0 0 1 TeXcolorrgb 30 w(4.9)p Black 29 w(for)g(information)946
5006 y(on)e(making)f(new)g(con\014guration)f(pac)n(k)-5
b(ages.)p Black 2130 5255 a(32)p Black eop end
%%Page: 33 41
TeXDict begin 33 40 bop 0 TeXcolorgray Black Black Black
Black Black 332 523 a Fo(,in)42 b Fq(struct-name)498
623 y Fr(The)21 b Fo(,in)e Fr(command)h(mo)n(v)n(es)f(the)i(command)f
(pro)r(cessor)e(to)i(a)g(sp)r(eci\014ed)h(structure's)498
722 y(underlying)27 b(pac)n(k)-5 b(age.)35 b(F)-7 b(or)27
b(example:)p Black Black 498 904 a Fo(user>)42 b(,config)498
1004 y(config>)f(\(define-structur)o(e)c(foo)43 b(\(export)d(a\))934
1104 y(\(open)i(scheme\)\))498 1203 y(config>)f(,in)h(foo)498
1303 y(foo>)g(\(define)f(a)i(13\))498 1402 y(foo>)f(a)498
1502 y(13)498 1684 y Fr(In)32 b(this)f(example)g(the)h(command)f(pro)r
(cessor)e(starts)i(in)h(a)f(pac)n(k)-5 b(age)29 b(called)i
Fo(user)p Fr(,)498 1784 y(but)25 b(the)f Fo(,config)d
Fr(command)j(mo)n(v)n(es)e(it)j(in)n(to)e(the)i(con\014guration)d(pac)n
(k)-5 b(age,)23 b(whic)n(h)498 1883 y(has)g(the)h(name)f
Fo(config)p Fr(.)33 b(The)23 b Fo(define-structure)17
b Fr(form)23 b(binds,)h(in)g Fo(config)p Fr(,)e(the)498
1983 y(name)31 b Fo(foo)f Fr(to)h(a)f(structure)h(that)g(exp)r(orts)g
Fo(a)p Fr(.)47 b(Finally)-7 b(,)32 b(the)f(command)g
Fo(,in)42 b(foo)498 2083 y Fr(mo)n(v)n(es)26 b(the)i(command)g(pro)r
(cessor)d(in)n(to)i(structure)g Fo(foo)p Fr('s)g(underlying)g(pac)n(k)
-5 b(age.)498 2212 y(A)33 b(pac)n(k)-5 b(age's)31 b(b)r(o)r(dy)i(isn't)
h(executed)f(\(ev)-5 b(aluated\))33 b(un)n(til)g(the)g(pac)n(k)-5
b(age)31 b(is)i Fq(lo)l(ade)l(d)p Fr(,)498 2312 y(whic)n(h)28
b(is)f(accomplished)g(b)n(y)g(the)h Fo(,load-package)23
b Fr(command.)p Black Black 332 2471 a Fo(,in)42 b Fq(struct-name)49
b(c)l(ommand)498 2571 y Fr(This)33 b(form)g(of)g(the)g
Fo(,in)f Fr(command)h(executes)g(a)f(single)h(command)f(in)i(the)f(sp)r
(ec-)498 2670 y(i\014ed)e(pac)n(k)-5 b(age)30 b(without)h(mo)n(ving)f
(the)i(command)e(pro)r(cessor)f(in)n(to)i(that)g(pac)n(k)-5
b(age.)498 2770 y(Example:)p Black Black 498 2952 a Fo(,in)42
b(mumble)g(\(cons)f(1)i(2\))498 3051 y(,in)f(mumble)g(,trace)f(foo)p
Black Black 332 3234 a(,user)h([)p Fq(c)l(ommand)9 b
Fo(])498 3333 y Fr(This)22 b(is)f(similar)g(to)h(the)g
Fo(,config)d Fr(and)j Fo(,in)e Fr(commands.)34 b(It)22
b(mo)n(v)n(es)f(to)g(or)g(executes)498 3433 y(a)33 b(command)g(in)g
(the)h(user)f(pac)n(k)-5 b(age)31 b(\(whic)n(h)j(is)f(the)h(default)f
(pac)n(k)-5 b(age)32 b(when)i(the)498 3532 y(Sc)n(heme)28
b(48)e(command)i(pro)r(cessor)d(starts\).)p Black Black
332 3692 a Fo(,user-package-is)37 b Fq(name)498 3791
y Fr(The)30 b Fo(,user-package-is)23 b Fr(command)29
b(designates)f(a)i(new)f(user)g(pac)n(k)-5 b(age)28 b(for)h(use)498
3891 y(b)n(y)e(the)h Fo(,user)e Fr(command.)p Black Black
332 4050 a Fo(,load-package)38 b Fq(struct-name)498 4150
y Fr(The)32 b Fo(,load-package)26 b Fr(command)31 b(ensures)g(that)h
(the)g(sp)r(eci\014ed)g(structure's)f(un-)498 4249 y(derlying)h(pac)n
(k)-5 b(age's)31 b(program)g(has)h(b)r(een)i(loaded.)52
b(This)32 b(consists)g(of)h(\(1\))g(recur-)498 4349 y(siv)n(ely)24
b(ensuring)f(that)i(the)g(pac)n(k)-5 b(ages)23 b(of)h(an)n(y)g(op)r
(ened)g(or)g(accessed)f(structures)h(are)498 4449 y(loaded,)35
b(follo)n(w)n(ed)e(b)n(y)h(\(2\))g(executing)g(the)g(pac)n(k)-5
b(age's)32 b(b)r(o)r(dy)i(as)g(sp)r(eci\014ed)g(b)n(y)g(its)498
4548 y(de\014nition's)28 b Fo(begin)e Fr(and)h Fo(files)f
Fr(forms.)p Black Black 332 4707 a Fo(,reload-package)37
b Fq(struct-name)498 4807 y Fr(This)30 b(command)g(re-executes)f(the)h
(structure's)g(pac)n(k)-5 b(age's)28 b(program.)43 b(It)30
b(is)g(most)498 4907 y(useful)k(if)g(the)f(program)e(comes)i(from)g(a)g
(\014le)g(or)g(\014les,)h(when)g(it)f(will)h(up)r(date)g(the)498
5006 y(pac)n(k)-5 b(age's)26 b(bindings)i(after)f(m)n(utations)g(to)g
(its)h(source)f(\014le.)p Black 1681 5255 a(33)p Black
eop end
%%Page: 34 42
TeXDict begin 34 41 bop 0 TeXcolorgray Black Black Black
Black Black 780 523 a Fo(,load)42 b Fq(\014lesp)l(e)l(c)49
b Fo(...)946 623 y Fr(The)29 b Fo(,load)e Fr(command)i(executes)f
(forms)g(from)h(the)g(sp)r(eci\014ed)g(\014le)g(or)f(\014les)h(in)g
(the)946 722 y(curren)n(t)19 b(pac)n(k)-5 b(age.)32 b
Fo(,load)42 b Fq(\014lesp)l(e)l(c)24 b Fr(is)19 b(similar)f(to)h
Fo(\(load)41 b(")p Fq(\014lesp)l(e)l(c)5 b Fo("\))18
b Fr(except)h(that)946 822 y(the)25 b(name)f Fo(load)f
Fr(needn't)i(b)r(e)f(b)r(ound)h(in)f(the)h(curren)n(t)e(pac)n(k)-5
b(age)23 b(to)h(Sc)n(heme's)g Fo(load)946 922 y Fr(pro)r(cedure.)p
Black Black 780 1088 a Fo(,for-syntax)39 b([)p Fq(c)l(ommand)9
b Fo(])946 1188 y Fr(This)22 b(is)g(similar)f(to)g(the)h
Fo(,config)d Fr(and)j Fo(,in)e Fr(commands.)35 b(It)22
b(mo)n(v)n(es)e(to)i(or)f(executes)946 1288 y(a)34 b(command)g(in)g
(the)g(curren)n(t)f(pac)n(k)-5 b(age's)33 b(\\pac)n(k)-5
b(age)31 b(for)j(syn)n(tax,")g(whic)n(h)g(is)g(the)946
1387 y(pac)n(k)-5 b(age)21 b(in)h(whic)n(h)g(the)g(forms)f
Fc(f)31 b Fr(in)22 b Fo(\(define-syntax)38 b Fq(name)50
b(f)18 b Fo(\))k Fr(are)e(ev)-5 b(aluated.)p Black Black
780 1554 a Fo(,new-package)39 b([)p Fq(struct-name)48
b Fo(...])946 1654 y Fr(The)28 b Fo(,new-package)c Fr(command)j
(creates)g(a)h(new)g(pac)n(k)-5 b(age)26 b(and)i(mo)n(v)n(es)f(the)h
(com-)946 1754 y(mand)40 b(pro)r(cessor)e(to)h(it.)73
b(With)41 b(no)e(argumen)n(ts,)j(only)d(the)h(standard)e(Sc)n(heme)946
1853 y(bindings)32 b(are)e(visible)i(in)f(the)h(new)g(pac)n(k)-5
b(age.)46 b(Otherwise,)32 b(the)g(structures)f(sp)r(ec-)946
1953 y(i\014ed)h(as)e(command)h(argumen)n(ts)f(\(and)h(not)h(the)f
Fo(scheme)e Fr(structure\))i(are)f(op)r(ened)946 2052
y(in)e(the)g(new)g(pac)n(k)-5 b(age.)p Black Black 780
2219 a Fo(,structure)40 b Fq(name)50 b(interfac)l(e)946
2319 y Fr(The)30 b Fo(,structure)25 b Fr(command)30 b(de\014nes)f
Fq(name)36 b Fr(in)30 b(the)g(con\014guration)d(pac)n(k)-5
b(age)28 b(to)946 2419 y(b)r(e)g(a)g(structure)f(with)h(in)n(terface)f
Fq(interfac)l(e)35 b Fr(based)27 b(on)g(the)h(curren)n(t)f(pac)n(k)-5
b(age.)739 2694 y Fj(4.9)135 b(Con\014guration)46 b(pac)l(k)-7
b(ages)739 2877 y Fr(It)29 b(is)g(p)r(ossible)f(to)h(set)g(up)g(m)n
(ultiple)g(con\014guration)e(pac)n(k)-5 b(ages.)39 b(The)29
b(default)g(con\014gura-)739 2976 y(tion)f(pac)n(k)-5
b(age)26 b(op)r(ens)h(the)h(follo)n(wing)e(structures:)p
Black 863 3143 a Fn(\017)p Black 41 w Fo(module-system)p
Fr(,)20 b(whic)n(h)j(exp)r(orts)g Fo(define-structure)17
b Fr(and)24 b(the)g(other)f(con\014gu-)946 3242 y(ration)f(language)f
(k)n(eyw)n(ords,)h(as)g(w)n(ell)g(as)g(standard)g(t)n(yp)r(es)h(and)f
(t)n(yp)r(e)h(constructors)946 3342 y(\()p Fo(:syntax)p
Fr(,)j Fo(:value)p Fr(,)f Fo(proc)p Fr(,)h(etc.\).)p
Black 863 3509 a Fn(\017)p Black 41 w Fo(built-in-structur)o(es)p
Fr(,)k(whic)n(h)k(exp)r(orts)f(structures)h(that)h(are)e(built)i(in)n
(to)f(the)946 3609 y(initial)41 b(Sc)n(heme)g(48)e(image;)47
b(these)40 b(include)h Fo(scheme)p Fr(,)h Fo(threads)p
Fr(,)f Fo(tables)p Fr(,)g(and)946 3708 y Fo(records)p
Fr(.)p Black 863 3875 a Fn(\017)p Black 41 w Fo(more-structures)p
Fr(,)j(whic)n(h)h(exp)r(orts)f(additional)g(structures)g(that)h(are)f
(a)n(v)-5 b(ail-)946 3975 y(able)35 b(in)g(the)h(dev)n(elopmen)n(t)e
(en)n(vironmen)n(t.)59 b(A)35 b(complete)g(listing)g(can)f(b)r(e)i
(found)946 4074 y(in)h(the)f(de\014nition)h(of)42 b Fo
(more-structures-i)o(nt)o(er)o(fac)o(e)30 b Fr(at)36
b(the)g(end)h(of)f(the)g(\014le)946 4174 y Fo(scheme/packages.s)o(cm)p
Fr(.)739 4341 y(Note)28 b(that)f(it)h(do)r(es)g(not)f(op)r(en)h
Fo(scheme)p Fr(.)863 4441 y(Y)-7 b(ou)28 b(can)g(de\014ne)g(additional)
f(con\014guration)f(pac)n(k)-5 b(ages)26 b(b)n(y)h(making)g(a)h(pac)n
(k)-5 b(age)26 b(that)739 4540 y(op)r(ens)18 b Fo(module-system)13
b Fr(and,)20 b(optionally)-7 b(,)20 b Fo(built-in-structu)o(re)o(s)p
Fr(,)14 b Fo(more-structures)p Fr(,)739 4640 y(or)27
b(other)g(structures)f(that)i(exp)r(ort)f(structures)g(and)h(in)n
(terfaces.)863 4740 y(F)-7 b(or)27 b(example:)p Black
Black 739 4907 a Fo(>)43 b(,config)e(\(define-structur)o(e)c(foo)43
b(\(export\))1262 5006 y(\(open)e(module-system)p Black
2130 5255 a Fr(34)p Black eop end
%%Page: 35 43
TeXDict begin 35 42 bop 0 TeXcolorgray Black Black Black
1075 523 a Fo(built-in-structur)o(es)1075 623 y(more-structures\)\))291
722 y(>)43 b(,in)f(foo)291 822 y(foo>)g(\(define-structu)o(re)37
b(x)43 b(\(export)e(a)i(b\))596 922 y(\(open)e(scheme\))596
1021 y(\(files)g(x\)\))291 1121 y(foo>)415 1288 y Fr(Unfortunately)-7
b(,)25 b(the)f(ab)r(o)n(v)n(e)f(example)h(do)r(es)f(not)h(w)n(ork.)34
b(The)25 b(problem)e(is)h(that)g(ev)n(ery)291 1387 y(en)n(vironmen)n(t)
d(in)h(whic)n(h)g Fo(define-structure)16 b Fr(is)22 b(used)g(m)n(ust)g
(also)f(ha)n(v)n(e)g(a)h(w)n(a)n(y)f(to)h(create)291
1487 y(\\syn)n(tactic)j(to)n(w)n(ers".)35 b(A)27 b(new)g(syn)n(tactic)f
(to)n(w)n(er)g(is)g(required)g(whenev)n(er)g(a)h(new)f(en)n(viron-)291
1587 y(men)n(t)i(is)h(created)e(for)h(compiling)g(the)h(source)e(co)r
(de)i(in)f(the)h(pac)n(k)-5 b(age)27 b(asso)r(ciated)g(with)i(a)291
1686 y(new)f(structure.)38 b(The)29 b(en)n(vironmen)n(t's)e(to)n(w)n
(er)f(is)j(used)f(at)g(compile)g(time)h(for)f(ev)-5 b(aluating)291
1786 y(the)28 b Fq(macr)l(o-sour)l(c)l(e)34 b Fr(in)p
Black Black 291 1953 a Fo(\(define-syntax)j Fq(name)50
b(macr)l(o-sour)l(c)l(e)6 b Fo(\))291 2053 y(\(let-syntax)39
b(\(\()p Fq(name)49 b(macr)l(o-sour)l(c)l(e)6 b Fo(\))43
b(...\))f Fq(b)l(o)l(dy)7 b Fo(\))291 2220 y Fr(and)23
b(so)g(forth.)36 b(It)24 b(is)f(a)h(\\to)n(w)n(er")d(b)r(ecause)i(that)
h(en)n(vironmen)n(t,)g(in)g(turn,)h(has)e(to)g(sa)n(y)g(what)291
2319 y(en)n(vironmen)n(t)j(to)i(use)f(if)35 b Fo(macro-source)22
b Fr(itself)28 b(con)n(tains)f(a)g(use)h(of)34 b Fo(let-syntax)p
Fr(.)415 2419 y(The)26 b(simplest)f(w)n(a)n(y)g(to)g(pro)n(vide)f(a)h
(to)n(w)n(er)g(mak)n(er)f(is)h(to)h(pass)e(on)h(the)h(one)g(used)f(b)n
(y)g(an)291 2519 y(existing)18 b(con\014guration)e(pac)n(k)-5
b(age.)33 b(The)18 b(sp)r(ecial)g(form)g Fo(export-syntactic)o(-to)o
(we)o(r-m)o(ak)o(er)291 2618 y Fr(creates)23 b(an)h(in)n(terface)g
(that)g(exp)r(orts)g(a)g(con\014guration)f(pac)n(k)-5
b(age's)22 b(to)n(w)n(er.)35 b(The)24 b(follo)n(wing)291
2718 y(example)i(uses)h Fo(export-syntactic)o(-t)o(ow)o(er-)o(ma)o(ker)
20 b Fr(and)27 b(the)g Fo(,structure)c Fr(command)291
2818 y(to)k(obtain)g(a)h(to)n(w)n(er)e(mak)n(er)g(and)h(create)g(a)g
(new)h(con\014guration)e(en)n(vironmen)n(t.)p Black Black
291 3002 a Fo(>)43 b(,config)d(,structure)g(t)j(\(export-syntacti)o
(c-t)o(ow)o(er-)o(ma)o(ke)o(r\))291 3101 y(>)g(,config)d
(\(define-structure)d(foo)42 b(\(export\))814 3201 y(\(open)f
(module-system)1075 3300 y(t)1075 3400 y(built-in-structur)o(es)1075
3500 y(more-structures\)\))415 3684 y Fr(Before)18 b(Sc)n(heme)g(48)f
(1.9,)j Fo(export-syntactic)o(-t)o(ow)o(er-)o(ma)o(ker)12
b Fr(w)n(as)17 b(named)h Fo(export-reflective)o(-t)o(owe)o(r-)o(ma)o
(ker)o Fr(;)291 3783 y(this)27 b(name)h(is)f(still)h(supp)r(orted)g
(for)f(bac)n(kw)n(ards)e(compatibilit)n(y)-7 b(.)291
4059 y Fj(4.10)135 b(Discussion)291 4242 y Fr(This)25
b(mo)r(dule)h(system)g(w)n(as)f(not)h(designed)f(as)g(the)h(b)r(e-all)g
(and)f(end-all)h(of)f(Sc)n(heme)h(mo)r(d-)291 4341 y(ule)35
b(systems;)j(it)d(w)n(as)f(only)g(in)n(tended)h(to)g(help)g(us)g
(organize)e(the)i(Sc)n(heme)g(48)f(system.)291 4441 y(Not)h(only)g(do)r
(es)g(the)g(mo)r(dule)h(system)f(help)h(a)n(v)n(oid)d(name)i(clashes)g
(b)n(y)g(k)n(eeping)f(di\013er-)291 4540 y(en)n(t)39
b(subsystems)g(in)h(di\013eren)n(t)g(namespaces,)i(it)e(has)f(also)f
(help)r(ed)j(us)e(to)h(tigh)n(ten)g(up)291 4640 y(and)c(generalize)f
(Sc)n(heme)i(48's)e(in)n(ternal)h(in)n(terfaces.)63 b(Sc)n(heme)37
b(48)e(is)i(un)n(usual)f(among)291 4740 y(Lisp)26 b(implemen)n(tations)
h(in)g(admitting)g(man)n(y)g(di\013eren)n(t)g(p)r(ossible)f(mo)r(des)h
(of)g(op)r(eration.)291 4839 y(Examples)f(of)i(suc)n(h)f(m)n(ultiple)h
(mo)r(des)g(include)f(the)h(follo)n(wing:)p Black 415
5006 a Fn(\017)p Black 41 w Fr(Linking)f(can)h(b)r(e)g(either)f(static)
h(or)e(dynamic.)p Black 1681 5255 a(35)p Black eop end
%%Page: 36 44
TeXDict begin 36 43 bop 0 TeXcolorgray Black Black Black
Black 863 523 a Fn(\017)p Black 41 w Fr(The)22 b(dev)n(elopmen)n(t)f
(en)n(vironmen)n(t)f(\(compiler,)j(debugger,)e(and)g(command)g(pro)r
(ces-)946 623 y(sor\))k(can)g(run)g(either)g(in)h(the)g(same)e(address)
g(space)h(as)g(the)g(program)f(b)r(eing)h(dev)n(el-)946
722 y(op)r(ed)30 b(or)e(in)h(a)g(di\013eren)n(t)g(address)f(space.)41
b(The)29 b(en)n(vironmen)n(t)f(and)h(user)f(program)946
822 y(ma)n(y)c(ev)n(en)g(run)g(on)g(di\013eren)n(t)g(pro)r(cessors)e
(under)i(di\013eren)n(t)h(op)r(erating)e(systems[)p 0 0 1
TeXcolorrgb(8)p Black -1 w(].)p Black 863 1012 a Fn(\017)p
Black 41 w Fr(The)32 b(virtual)e(mac)n(hine)h(can)g(b)r(e)g(supp)r
(orted)g(b)n(y)g(either)g(of)g(t)n(w)n(o)f(implemen)n(tations)946
1112 y(of)e(its)g(implemen)n(tation)f(language,)f(Presc)n(heme.)739
1296 y(The)34 b(mo)r(dule)g(system)f(has)g(b)r(een)h(helpful)h(in)f
(organizing)d(these)j(m)n(ultiple)g(mo)r(des.)56 b(By)739
1396 y(forcing)19 b(us)h(to)g(write)g(do)n(wn)f(in)n(terfaces)h(and)f
(mo)r(dule)i(dep)r(endencies,)h(the)e(mo)r(dule)g(system)739
1495 y(helps)k(us)h(to)f(k)n(eep)g(the)g(system)g(clean,)h(or)e(at)h
(least)g(to)h(k)n(eep)e(us)i(honest)f(ab)r(out)g(ho)n(w)g(clean)739
1595 y(or)j(not)g(it)h(is.)863 1700 y(The)c(need)f(to)g(mak)n(e)f
(structures)h(and)f(in)n(terfaces)h(second-class)e(instead)i(of)g
(\014rst-class)739 1800 y(results)g(from)g(the)h(requiremen)n(ts)f(of)h
(static)f(program)f(analysis:)33 b(it)25 b(m)n(ust)e(b)r(e)h(p)r
(ossible)g(for)739 1900 y(the)30 b(compiler)e(and)i(link)n(er)e(to)i
(expand)f(macros)f(and)h(resolv)n(e)f(v)-5 b(ariable)28
b(bindings)i(b)r(efore)739 1999 y(the)24 b(program)d(is)j(executed.)36
b(Structures)23 b(could)g(b)r(e)h(made)g(\014rst-class)e(\(as)h(in)h
(FX[)p 0 0 1 TeXcolorrgb(10)p Black -1 w(]\))h(if)f(a)739
2099 y(t)n(yp)r(e)i(system)f(w)n(ere)f(added)i(to)f(Sc)n(heme)g(and)g
(the)h(de\014nitions)g(of)f(exp)r(orted)g(macros)f(w)n(ere)739
2199 y(de\014ned)33 b(in)h(in)n(terfaces)e(instead)h(of)g(in)h(mo)r
(dule)f(b)r(o)r(dies,)i(but)e(ev)n(en)g(in)h(that)f(case)f(t)n(yp)r(es)
739 2298 y(and)27 b(in)n(terfaces)g(w)n(ould)g(remain)g(second-class.)
863 2404 y(The)34 b(prohibition)f(on)g(assignmen)n(t)f(to)i(imp)r
(orted)f(bindings)g(mak)n(es)g(substitution)h(a)739 2503
y(v)-5 b(alid)31 b(optimization)f(when)h(a)g(mo)r(dule)g(is)f(compiled)
h(as)f(a)h(blo)r(c)n(k.)46 b(The)31 b(blo)r(c)n(k)f(compiler)739
2603 y(\014rst)f(scans)f(the)i(en)n(tire)f(mo)r(dule)h(b)r(o)r(dy)-7
b(,)30 b(noting)f(whic)n(h)g(v)-5 b(ariables)29 b(are)f(assigned.)41
b(Those)739 2703 y(that)20 b(aren't)g(assigned)e(\(only)i
Fo(define)p Fr(d\))e(ma)n(y)i(b)r(e)g(assumed)g(nev)n(er)f(assigned,)h
(ev)n(en)g(if)g(they)739 2802 y(are)j(exp)r(orted.)35
b(The)24 b(optimizer)f(can)g(then)i(p)r(erform)e(a)g(v)n(ery)g
(simple-minded)h(analysis)e(to)739 2902 y(determine)30
b(automatically)f(that)h(some)f(pro)r(cedures)g(can)g(and)h(should)f
(ha)n(v)n(e)g(their)h(calls)739 3002 y(compiled)d(in)h(line.)863
3107 y(The)d(programming)e(st)n(yle)h(encouraged)f(b)n(y)h(the)h(mo)r
(dule)g(system)g(is)g(consisten)n(t)f(with)739 3207 y(the)j(unextended)
f(Sc)n(heme)g(language.)35 b(Because)25 b(mo)r(dule)i(system)f
(features)g(do)g(not)g(gen-)739 3307 y(erally)f(sho)n(w)f(up)i(within)h
(mo)r(dule)f(b)r(o)r(dies,)g(an)g(individual)f(mo)r(dule)h(ma)n(y)f(b)r
(e)i(understo)r(o)r(d)739 3406 y(b)n(y)g(someone)g(who)h(is)f(not)h
(familiar)f(with)i(the)f(mo)r(dule)g(system.)37 b(This)28
b(is)g(a)f(great)g(aid)g(to)739 3506 y(co)r(de)g(presen)n(tation)f(and)
h(p)r(ortabilit)n(y)-7 b(.)36 b(If)28 b(a)f(few)g(simple)h(conditions)e
(are)h(met)g(\(no)g(name)739 3605 y(con\015icts)34 b(b)r(et)n(w)n(een)h
(pac)n(k)-5 b(ages,)34 b(and)g(use)h(of)f Fo(files)e
Fr(in)j(preference)f(to)g Fo(begin)p Fr(\),)h(then)g(a)739
3705 y(m)n(ulti-mo)r(dule)30 b(program)e(can)i(b)r(e)g(loaded)g(in)n
(to)g(a)f(Sc)n(heme)h(implemen)n(tation)g(that)h(do)r(es)739
3805 y(not)24 b(supp)r(ort)g(the)g(mo)r(dule)g(system.)36
b(The)24 b(Sc)n(heme)g(48)f(static)h(link)n(er)f(satis\014es)g(these)h
(con-)739 3904 y(ditions,)32 b(and)g(can)f(therefore)g(run)g(in)h
(other)f(Sc)n(heme)g(implemen)n(tations.)49 b(Sc)n(heme)31
b(48's)739 4004 y(b)r(o)r(otstrap)19 b(pro)r(cess,)h(whic)n(h)g(is)g
(based)g(on)f(the)h(static)g(link)n(er,)h(is)f(therefore)f
(nonincestuous.)739 4104 y(This)28 b(con)n(trasts)f(with)j(most)e
(other)g(in)n(tegrated)g(programming)e(en)n(vironmen)n(ts,)i(suc)n(h)g
(as)739 4203 y(Smalltalk-80,)33 b(where)f(the)i(system)e(can)h(only)g
(b)r(e)g(built)h(using)e(an)h(existing)g(v)n(ersion)e(of)739
4303 y(the)d(system)f(itself.)863 4408 y(Lik)n(e)34 b(ML)g(mo)r(dules,)
h(but)g(unlik)n(e)f(Sc)n(heme)g(Xero)n(x)e(mo)r(dules,)k(this)e(mo)r
(dule)g(system)739 4508 y(is)e(comp)r(ositional.)48 b(That)32
b(is,)h(structures)e(are)g(constructed)h(b)n(y)f(single)h(syn)n(tactic)
f(units)739 4608 y(that)j(comp)r(ose)f(existing)g(structures)g(with)h
(a)f(b)r(o)r(dy)h(of)f(co)r(de.)55 b(In)33 b(Sc)n(heme)h(Xero)n(x,)g
(the)739 4707 y(set)25 b(of)h(mo)r(dules)f(that)h(can)f(con)n(tribute)g
(to)h(an)f(in)n(terface)g(is)g(op)r(en-ended)h(|)f(an)n(y)g(mo)r(dule)
739 4807 y(can)30 b(con)n(tribute)h(bindings)g(to)f(an)n(y)h(in)n
(terface)f(whose)g(name)h(is)g(in)g(scop)r(e.)46 b(The)31
b(mo)r(dule)739 4907 y(system)25 b(implemen)n(tation)h(is)f(a)g
(cross-bar)e(that)j(c)n(hannels)f(de\014nitions)h(from)f(mo)r(dules)g
(to)739 5006 y(in)n(terfaces.)35 b(The)25 b(mo)r(dule)h(system)e
(describ)r(ed)h(here)g(has)f(simpler)h(seman)n(tics)f(and)h(mak)n(es)p
Black 2130 5255 a(36)p Black eop end
%%Page: 37 45
TeXDict begin 37 44 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(dep)r(endencies)38 b(easier)f(to)h(trace.)68
b(It)39 b(also)e(allo)n(ws)g(for)g(higher-order)f(mo)r(dules,)41
b(whic)n(h)291 623 y(Sc)n(heme)27 b(Xero)n(x)f(considers)h(unimp)r
(ortan)n(t.)p Black 1681 5255 a(37)p Black eop end
%%Page: 38 46
TeXDict begin 38 45 bop 0 TeXcolorgray Black Black Black
739 1146 a Fl(Chapter)65 b(5)739 1561 y Fp(Libraries)739
1993 y Fr(Use)28 b(the)h Fo(,open)d Fr(command)i(\(section)p
0 0 1 TeXcolorrgb 29 w(3.4)p Black(\))f(or)h(the)g(mo)r(dule)h
(language)e(\(c)n(hapter)p 0 0 1 TeXcolorrgb 28 w(2.6)p
Black(\))g(to)739 2093 y(op)r(en)h(the)g(structures)e(describ)r(ed)i(b)
r(elo)n(w.)739 2369 y Fj(5.1)135 b(General)46 b(utilities)739
2552 y Fr(These)27 b(are)g(in)h(the)g Fo(big-util)c Fr(structure.)p
Black 755 2702 a Fn(\017)p Black 42 w Fo(\(atom?)47 b
Fq(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)739
2852 y Fo(\(atom?)85 b Fq(x)9 b Fo(\))27 b Fr(is)h(the)g(same)f(as)g
Fo(\(not)42 b(\(pair?)84 b Fq(x)10 b Fo(\)\))p Fr(.)p
Black 755 3003 a Fn(\017)p Black 42 w Fo(\(null-list?)45
b Fq(list)8 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)739
3153 y Fr(Returns)27 b(true)g(for)g(the)h(empt)n(y)f(list,)h(false)f
(for)g(a)g(pair,)f(and)i(signals)e(an)h(error)e(otherwise.)p
Black 755 3303 a Fn(\017)p Black 42 w Fo(\(neq?)47 b
Fq(value)c(value)6 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)739
3454 y Fo(\(neq?)85 b Fq(x)53 b(y)8 b Fo(\))27 b Fr(is)g(the)h(same)f
(as)g Fo(\(not)42 b(\(eq?)86 b Fq(x)53 b(y)8 b Fo(\)\))p
Fr(.)p Black 755 3604 a Fn(\017)p Black 42 w Fo(\(n=)40
b Fq(numb)l(er)h(numb)l(er)9 b Fo(\))40 b Fn(!)h Fq(b)l(o)l(ole)l(an)
739 3754 y Fo(\(n=)h Fq(x)53 b(y)8 b Fo(\))27 b Fr(is)h(the)g(same)f
(as)g Fo(\(not)42 b(\(=)g Fq(x)53 b(y)8 b Fo(\)\))p Fr(.)p
Black 755 3905 a Fn(\017)p Black 42 w Fo(\(identity)37
b Fq(value)6 b Fo(\))42 b Fn(!)g Fq(value)p Black 755
4004 a Fn(\017)p Black 42 w Fo(\(no-op)d Fq(value)6 b
Fo(\))41 b Fn(!)h Fq(value)739 4155 y Fr(These)24 b(b)r(oth)h(just)h
(return)e(their)g(argumen)n(t.)35 b Fo(No-op)23 b Fr(is)h(guaran)n
(teed)f(not)i(to)f(b)r(e)h(compiled)739 4254 y(in-line,)j
Fo(identity)c Fr(ma)n(y)j(b)r(e.)p Black 755 4405 a Fn(\017)p
Black 42 w Fo(\(memq?)47 b Fq(value)42 b(list)8 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)739 4555 y Fr(Returns)27
b(true)h(if)g Fq(value)34 b Fr(is)28 b(in)g Fq(list)8
b Fr(,)28 b(false)f(otherwise.)p Black 755 4706 a Fn(\017)p
Black 42 w Fo(\(any?)47 b Fq(pr)l(e)l(dic)l(ate)c(list)8
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)739 4856 y Fr(Returns)27
b(true)h(if)g Fq(pr)l(e)l(dic)l(ate)35 b Fr(is)28 b(true)f(for)g(an)n
(y)g(elemen)n(t)h(of)f Fq(list)8 b Fr(.)p Black 755 5006
a Fn(\017)p Black 42 w Fo(\(every?)47 b Fq(pr)l(e)l(dic)l(ate)42
b(list)8 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black
2130 5255 a Fr(38)p Black eop end
%%Page: 39 47
TeXDict begin 39 46 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(Returns)27 b(true)h(if)g Fq(pr)l(e)l(dic)l(ate)35
b Fr(is)27 b(true)h(for)f(ev)n(ery)f(elemen)n(t)i(of)f
Fq(list)8 b Fr(.)p Black 307 684 a Fn(\017)p Black 41
w Fo(\(any)40 b Fq(pr)l(e)l(dic)l(ate)j(list)8 b Fo(\))41
b Fn(!)g Fq(value)p Black 307 783 a Fn(\017)p Black 41
w Fo(\(first)e Fq(pr)l(e)l(dic)l(ate)k(list)8 b Fo(\))41
b Fn(!)h Fq(value)291 944 y Fo(Any)25 b Fr(returns)g(some)h(elemen)n(t)
g(of)g Fq(list)35 b Fr(for)25 b(whic)n(h)i Fq(pr)l(e)l(dic)l(ate)33
b Fr(is)26 b(true,)h(or)e(false)h(if)h(there)f(are)291
1044 y(none.)52 b Fo(First)32 b Fr(do)r(es)g(the)i(same)e(except)h
(that)g(it)h(returns)e(the)i(\014rst)e(elemen)n(t)h(for)g(whic)n(h)291
1143 y Fq(pr)l(e)l(dic)l(ate)i Fr(is)27 b(true.)p Black
307 1304 a Fn(\017)p Black 41 w Fo(\(filter)39 b Fq(pr)l(e)l(dic)l(ate)
k(list)8 b Fo(\))41 b Fn(!)g Fq(list)p Black 307 1403
a Fn(\017)p Black 41 w Fo(\(filter!)47 b Fq(pr)l(e)l(dic)l(ate)c(list)8
b Fo(\))41 b Fn(!)g Fq(list)291 1564 y Fr(Returns)30
b(a)f(list)i(con)n(taining)e(all)h(of)g(the)h(elemen)n(ts)f(of)g
Fq(list)38 b Fr(for)30 b(whic)n(h)g Fq(pr)l(e)l(dic)l(ate)38
b Fr(is)30 b(true.)291 1664 y(The)d(order)f(of)i(the)g(elemen)n(ts)f
(is)h(preserv)n(ed.)35 b Fo(Filter!)f Fr(ma)n(y)27 b(reuse)g(the)h
(storage)e(of)h Fq(list)8 b Fr(.)p Black 307 1824 a Fn(\017)p
Black 41 w Fo(\(filter-map)37 b Fq(pr)l(o)l(c)l(e)l(dur)l(e)42
b(list)8 b Fo(\))41 b Fn(!)h Fq(list)291 1985 y Fr(The)34
b(same)f(as)g Fo(filter)f Fr(except)i(the)g(returned)g(list)g(con)n
(tains)f(the)h(results)g(of)g(applying)291 2084 y Fq(pr)l(o)l(c)l(e)l
(dur)l(e)29 b Fr(instead)22 b(of)g(elemen)n(ts)h(of)f
Fq(list)8 b Fr(.)36 b Fo(\(filter-map)j Fq(p)49 b(l)9
b Fo(\))22 b Fr(is)g(the)h(same)f(as)g Fo(\(filter)291
2184 y(identity)40 b(\(map)i Fq(p)49 b(l)9 b Fo(\)\))p
Fr(.)p Black 307 2345 a Fn(\017)p Black 41 w Fo(\(partition-list)36
b Fq(pr)l(e)l(dic)l(ate)42 b(list)8 b Fo(\))41 b Fn(!)h
Fq(list)g(list)p Black 307 2444 a Fn(\017)p Black 41
w Fo(\(partition-list!)i Fq(pr)l(e)l(dic)l(ate)e(list)8
b Fo(\))41 b Fn(!)h Fq(list)g(list)291 2605 y Fr(The)21
b(\014rst)f(return)h(v)-5 b(alue)20 b(con)n(tains)g(those)h(elemen)n
(ts)g Fq(list)29 b Fr(for)20 b(whic)n(h)h Fq(pr)l(e)l(dic)l(ate)29
b Fr(is)20 b(true,)j(the)291 2705 y(second)f(con)n(tains)g(the)i
(remaining)e(elemen)n(ts.)36 b(The)23 b(order)f(of)h(the)g(elemen)n(ts)
g(is)h(preserv)n(ed.)291 2804 y Fo(Partition-list!)30
b Fr(ma)n(y)d(reuse)g(the)h(storage)e(of)h(the)h Fq(list)8
b Fr(.)p Black 307 2965 a Fn(\017)p Black 41 w Fo(\(remove-duplicate)o
(s)35 b Fq(list)8 b Fo(\))41 b Fn(!)h Fq(list)291 3125
y Fr(Returns)32 b(its)g(argumen)n(t)g(with)h(all)f(duplicate)g(elemen)n
(ts)h(remo)n(v)n(ed.)50 b(The)32 b(\014rst)g(instance)291
3225 y(of)27 b(eac)n(h)g(elemen)n(t)h(is)f(preserv)n(ed.)p
Black 307 3386 a Fn(\017)p Black 41 w Fo(\(delq)40 b
Fq(value)i(list)8 b Fo(\))41 b Fn(!)g Fq(list)p Black
307 3485 a Fn(\017)p Black 41 w Fo(\(delq!)48 b Fq(value)42
b(list)8 b Fo(\))41 b Fn(!)h Fq(list)p Black 307 3585
a Fn(\017)p Black 41 w Fo(\(delete)d Fq(pr)l(e)l(dic)l(ate)k(list)8
b Fo(\))41 b Fn(!)g Fq(list)291 3746 y Fr(All)35 b(three)g(of)g(these)g
(return)g Fq(list)43 b Fr(with)36 b(some)f(elemen)n(ts)g(remo)n(v)n
(ed.)57 b Fo(Delq)34 b Fr(remo)n(v)n(es)f(all)291 3845
y(elemen)n(ts)22 b Fo(eq?)34 b Fr(to)22 b Fq(value)7
b Fr(.)35 b Fo(Delq!)e Fr(do)r(es)22 b(the)h(same)f(and)g(ma)n(y)g(mo)r
(dify)h(the)f(list)h(argumen)n(t.)291 3945 y Fo(Delete)f
Fr(remo)n(v)n(es)g(all)j(elemen)n(ts)f(for)g(whic)n(h)g
Fq(pr)l(e)l(dic)l(ate)32 b Fr(is)25 b(true.)36 b(Both)24
b Fo(delq)f Fr(and)h Fo(delete)291 4044 y Fr(ma)n(y)i(reuse)h(some)g
(of)h(the)g(storage)e(in)h(the)h(list)g(argumen)n(t,)f(but)h(w)n(on't)f
(mo)r(dify)h(it.)p Black 307 4205 a Fn(\017)p Black 41
w Fo(\(reverse!)46 b Fq(list)8 b Fo(\))42 b Fn(!)f Fq(list)291
4366 y Fr(Destructiv)n(ely)27 b(rev)n(erses)e Fq(list)8
b Fr(.)p Black 307 4526 a Fn(\017)p Black 41 w Fo(\(concatenate-symb)o
(ol)35 b Fq(value)42 b(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41
b Fq(symb)l(ol)291 4687 y Fr(Returns)30 b(the)i(sym)n(b)r(ol)e(whose)g
(name)h(is)g(pro)r(duced)f(b)n(y)h(concatenating)e(the)j
Fo(display)p Fr(ed)291 4787 y(represen)n(tations)25 b(of)j
Fq(value)34 b Fr(.)14 b(.)g(.)g(.)p Black Black 291 4988
a Fo(\(concatenate-sy)o(mbo)o(l)37 b('abc)42 b("-")h(4\))f
Fr(=)-14 b Fn(\))44 b Fo('abc-4)p Black 1681 5255 a Fr(39)p
Black eop end
%%Page: 40 48
TeXDict begin 40 47 bop 0 TeXcolorgray Black Black Black
739 523 a Fj(5.2)135 b(Prett)l(y-prin)l(ting)739 705
y Fr(These)27 b(are)g(in)h(the)g Fo(pp)e Fr(structure.)p
Black 755 847 a Fn(\017)p Black 42 w Fo(\(p)40 b Fq(value)6
b Fo(\))p Black 755 947 a Fn(\017)p Black 42 w Fo(\(p)40
b Fq(value)i(output-p)l(ort)8 b Fo(\))p Black 755 1046
a Fn(\017)p Black 42 w Fo(\(pretty-print)36 b Fq(value)42
b(output-p)l(ort)e(p)l(osition)6 b Fo(\))739 1189 y Fr(Prett)n(y-prin)n
(t)43 b Fq(value)52 b Fr(The)45 b(curren)n(t)f(output)h(p)r(ort)g(is)f
(used)h(if)g(no)g(p)r(ort)f(is)h(sp)r(eci\014ed.)739
1288 y Fq(Position)k Fr(is)40 b(the)i(starting)e(o\013set.)76
b Fq(V)-6 b(alue)47 b Fr(will)42 b(b)r(e)f(prett)n(y-prin)n(ted)f(to)h
(the)g(righ)n(t)f(of)739 1388 y(this)28 b(column.)739
1661 y Fj(5.3)135 b(Bit)l(wise)47 b(in)l(teger)f(op)t(erations)739
1843 y Fr(These)27 b(functions)h(use)f(the)h(t)n(w)n(o's-complemen)n(t)
d(represen)n(tation)h(for)h(in)n(tegers.)36 b(There)26
b(is)739 1943 y(no)d(limit)h(to)g(the)g(n)n(um)n(b)r(er)f(of)g(bits)h
(in)g(an)f(in)n(teger.)35 b(They)23 b(are)g(in)g(the)h(structures)f
Fo(bitwise)739 2042 y Fr(and)k Fo(big-scheme)p Fr(.)p
Black 755 2185 a Fn(\017)p Black 42 w Fo(\(bitwise-and)36
b Fq(inte)l(ger)42 b(inte)l(ger)f(.)13 b(.)g(.)g Fo(\))51
b Fn(!)42 b Fq(inte)l(ger)p Black 755 2284 a Fn(\017)p
Black 42 w Fo(\(bitwise-ior)36 b Fq(inte)l(ger)42 b(inte)l(ger)f(.)13
b(.)g(.)g Fo(\))51 b Fn(!)42 b Fq(inte)l(ger)p Black
755 2384 a Fn(\017)p Black 42 w Fo(\(bitwise-xor)36 b
Fq(inte)l(ger)42 b(inte)l(ger)f(.)13 b(.)g(.)g Fo(\))51
b Fn(!)42 b Fq(inte)l(ger)p Black 755 2483 a Fn(\017)p
Black 42 w Fo(\(bitwise-not)36 b Fq(inte)l(ger)9 b Fo(\))41
b Fn(!)h Fq(inte)l(ger)739 2626 y Fr(These)24 b(p)r(erform)g(v)-5
b(arious)24 b(logical)f(op)r(erations)g(on)i(in)n(tegers)e(on)h(a)h
(bit-b)n(y-bit)f(basis.)35 b(`)p Fo(ior)p Fr(')739 2725
y(is)27 b(inclusiv)n(e)h(OR)f(and)g(`)p Fo(xor)p Fr(')g(is)g(exclusiv)n
(e)g(OR.)p Black 755 2868 a Fn(\017)p Black 42 w Fo(\(arithmetic-shi)o
(ft)35 b Fq(inte)l(ger)42 b(bit-c)l(ount)8 b Fo(\))40
b Fn(!)h Fq(inte)l(ger)739 3010 y Fr(Shifts)26 b(the)g(in)n(teger)f(b)n
(y)g(the)h(giv)n(en)f(bit)h(coun)n(t,)g(whic)n(h)f(m)n(ust)h(b)r(e)g
(an)f(in)n(teger,)h(shifting)g(left)739 3110 y(for)j(p)r(ositiv)n(e)f
(coun)n(ts)h(and)g(righ)n(t)g(for)f(negativ)n(e)g(ones.)42
b(Shifting)30 b(preserv)n(es)d(the)i(in)n(teger's)739
3209 y(sign.)p Black 755 3352 a Fn(\017)p Black 42 w
Fo(\(bit-count)37 b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)h
Fq(inte)l(ger)739 3494 y Fr(Coun)n(ts)37 b(the)g(n)n(um)n(b)r(er)g(of)g
(bits)g(set)g(in)h(the)f(in)n(teger.)65 b(If)37 b(the)h(argumen)n(t)e
(is)h(negativ)n(e)f(a)739 3594 y(bit)n(wise)27 b(NOT)h(op)r(eration)e
(is)i(p)r(erformed)f(b)r(efore)g(coun)n(ting.)739 3867
y Fj(5.4)135 b(Byte)45 b(v)l(ectors)739 4048 y Fr(These)38
b(are)f(homogeneous)f(v)n(ectors)g(of)i(small)g(in)n(tegers)e(\(0)k
Fn(\024)g Fc(i)g Fn(\024)g Fr(255\).)67 b(The)38 b(func-)739
4148 y(tions)28 b(that)g(op)r(erate)g(on)f(them)i(are)e(analogous)f(to)
i(those)g(for)f(v)n(ectors.)37 b(They)28 b(are)f(in)i(the)739
4248 y(structure)e Fo(byte-vectors)p Fr(.)p Black 755
4390 a Fn(\017)p Black 42 w Fo(\(byte-vector?)44 b Fq(value)6
b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 755 4490
a Fn(\017)p Black 42 w Fo(\(make-byte-vect)o(or)35 b
Fq(k)42 b(\014l)t(l)9 b Fo(\))41 b Fn(!)g Fq(byte-ve)l(ctor)p
Black 755 4589 a Fn(\017)p Black 42 w Fo(\(byte-vector)36
b Fq(b)42 b(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41 b Fq(byte-ve)l(ctor)p
Black 755 4689 a Fn(\017)p Black 42 w Fo(\(byte-vector-le)o(ng)o(th)35
b Fq(byte-ve)l(ctor)9 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p
Black 755 4789 a Fn(\017)p Black 42 w Fo(\(byte-vector-re)o(f)35
b Fq(byte-ve)l(ctor)42 b(k)9 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)p
Black 755 4888 a Fn(\017)p Black 42 w Fo(\(byte-vector-se)o(t!)35
b Fq(byte-ve)l(ctor)42 b(k)g(b)5 b Fo(\))p Black 755
4988 a Fn(\017)p Black 42 w Fo(\(byte-vector=?)44 b Fq(byte-ve)l(ctor)e
(byte-ve)l(ctor)9 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 2130 5255 a Fr(40)p Black eop end
%%Page: 41 49
TeXDict begin 41 48 bop 0 TeXcolorgray Black Black Black
291 523 a Fj(5.5)135 b(Sparse)45 b(v)l(ectors)291 705
y Fr(These)36 b(are)g(v)n(ectors)g(that)h(gro)n(w)e(as)i(large)e(as)i
(they)g(need)g(to.)65 b(That)37 b(is,)j(they)d(can)g(b)r(e)291
805 y(indexed)c(b)n(y)g(arbitrarily)e(large)h(nonnegativ)n(e)f(in)n
(tegers.)53 b(The)33 b(implemen)n(tation)g(allo)n(ws)291
904 y(for)h(arbitrarily)f(large)g(gaps)h(b)n(y)h(arranging)d(the)j(en)n
(tries)g(in)g(a)f(tree.)59 b(They)34 b(are)g(in)i(the)291
1004 y(structure)27 b Fo(sparse-vectors)p Fr(.)p Black
307 1153 a Fn(\017)p Black 41 w Fo(\(make-sparse-vect)o(or)o(\))35
b Fn(!)42 b Fq(sp)l(arse-ve)l(ctor)p Black 307 1253 a
Fn(\017)p Black 41 w Fo(\(sparse-vector-re)o(f)35 b Fq(sp)l(arse-ve)l
(ctor)43 b(k)9 b Fo(\))41 b Fn(!)g Fq(value)p Black 307
1353 a Fn(\017)p Black 41 w Fo(\(sparse-vector-se)o(t!)35
b Fq(sp)l(arse-ve)l(ctor)42 b(k)g(value)6 b Fo(\))p Black
307 1452 a Fn(\017)p Black 41 w Fo(\(sparse-vector->l)o(is)o(t)35
b Fq(sp)l(arse-ve)l(ctor)9 b Fo(\))42 b Fn(!)g Fq(list)291
1602 y Fo(Make-sparse-vec)o(tor)o Fr(,)14 b Fo(sparse-vector-ref)o
Fr(,)h(and)j Fo(sparse-vector-se)o(t!)27 b Fr(are)18
b(anal-)291 1701 y(ogous)40 b(to)i Fo(make-vector)p Fr(,)g
Fo(vector-ref)p Fr(,)g(and)g Fo(vector-set!)p Fr(,)g(except)g(that)g
(the)h(in-)291 1801 y(dices)38 b(passed)f(to)i Fo(sparse-vector-r)o(ef)
32 b Fr(and)38 b Fo(sparse-vector-set)o(!)63 b Fr(can)38
b(b)r(e)h(arbi-)291 1901 y(trarily)29 b(large.)43 b(F)-7
b(or)30 b(indices)g(whose)g(elemen)n(ts)g(ha)n(v)n(e)f(not)i(b)r(een)f
(set)h(in)f(a)g(sparse)f(v)n(ector,)291 2000 y Fo(sparse-vector-r)o(ef)
21 b Fr(returns)27 b Fo(#f)p Fr(.)415 2100 y Fo(Sparse-vector->l)o(ist)
22 b Fr(is)28 b(for)g(debugging:)38 b(It)29 b(returns)f(a)g(list)h(of)g
(the)g(consecutiv)n(e)291 2200 y(elemen)n(ts)35 b(in)g(a)g(sparse)f(v)n
(ector)g(from)h(0)g(to)g(the)g(highest)h(elemen)n(t)f(that)g(has)g(b)r
(een)h(set.)291 2299 y(Note)27 b(that)h(the)g(list)g(will)g(also)e
(include)i(all)g(the)f Fo(#f)g Fr(elemen)n(ts)h(for)f(the)h(unset)g
(elemen)n(ts.)291 2574 y Fj(5.6)135 b(Cells)291 2756
y Fr(These)29 b(hold)g(a)g(single)f(v)-5 b(alue)30 b(and)f(are)f
(useful)i(when)f(a)g(simple)h(indirection)f(is)g(required.)291
2856 y(The)d(system)h(uses)f(these)h(to)g(hold)f(the)h(v)-5
b(alues)27 b(of)g(lexical)f(v)-5 b(ariables)25 b(that)i(ma)n(y)f(b)r(e)
h Fo(set!)p Fr(.)p Black 307 3005 a Fn(\017)p Black 41
w Fo(\(cell?)48 b Fq(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 307 3105 a Fn(\017)p Black 41 w Fo(\(make-cell)d
Fq(value)6 b Fo(\))41 b Fn(!)h Fq(c)l(el)t(l)p Black
307 3204 a Fn(\017)p Black 41 w Fo(\(cell-ref)c Fq(c)l(el)t(l)9
b Fo(\))41 b Fn(!)h Fq(value)p Black 307 3304 a Fn(\017)p
Black 41 w Fo(\(cell-set!)c Fq(c)l(el)t(l)k(value)6 b
Fo(\))291 3579 y Fj(5.7)135 b(Queues)291 3761 y Fr(These)34
b(are)f(ordinary)g(\014rst-in,)j(\014rst-out)e(queues.)57
b(The)35 b(pro)r(cedures)e(are)h(in)g(structure)291 3860
y Fo(queues)p Fr(.)p Black 307 4010 a Fn(\017)p Black
41 w Fo(\(make-queue\))j Fn(!)k Fq(queue)p Black 307
4110 a Fn(\017)p Black 41 w Fo(\(queue?)47 b Fq(value)6
b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 307 4209
a Fn(\017)p Black 41 w Fo(\(queue-empty?)j Fq(queue)6
b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 307 4309
a Fn(\017)p Black 41 w Fo(\(list->queue)c Fq(values)7
b Fo(\))41 b Fn(!)h Fq(queue)p Black 307 4408 a Fn(\017)p
Black 41 w Fo(\(enqueue!)c Fq(queue)j(value)6 b Fo(\))p
Black 307 4508 a Fn(\017)p Black 41 w Fo(\(enqueue-many!)36
b Fq(queue)41 b(list)8 b Fo(\))p Black 307 4608 a Fn(\017)p
Black 41 w Fo(\(queue-head-or-va)o(lu)o(e)35 b Fq(queue)42
b(value)6 b Fo(\))42 b Fn(!)f Fq(value)p Black 307 4707
a Fn(\017)p Black 41 w Fo(\(queue-head-or-th)o(un)o(k)35
b Fq(queue)42 b(thunk)9 b Fo(\))40 b Fn(!)i Fq(value)p
Black 307 4807 a Fn(\017)p Black 41 w Fo(\(queue-head)37
b Fq(queue)6 b Fo(\))41 b Fn(!)h Fq(value)p Black 307
4907 a Fn(\017)p Black 41 w Fo(\(maybe-queue-head)35
b Fq(queue)6 b Fo(\))41 b Fn(!)g Fq(value)p Black 307
5006 a Fn(\017)p Black 41 w Fo(\(dequeue-or-value)o(!)j
Fq(queue)d(value)6 b Fo(\))42 b Fn(!)f Fq(value)p Black
1681 5255 a Fr(41)p Black eop end
%%Page: 42 50
TeXDict begin 42 49 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(dequeue-or-thu)o(nk)o(!)44
b Fq(queue)d(thunk)9 b Fo(\))41 b Fn(!)g Fq(value)p Black
755 623 a Fn(\017)p Black 42 w Fo(\(dequeue!)46 b Fq(queue)6
b Fo(\))41 b Fn(!)g Fq(value)p Black 755 722 a Fn(\017)p
Black 42 w Fo(\(maybe-dequeue!)i Fq(queue)6 b Fo(\))41
b Fn(!)h Fq(value)p Black 755 822 a Fn(\017)p Black 42
w Fo(\(empty-queue!)36 b Fq(queue)6 b Fo(\))739 957 y(Make-queue)37
b Fr(creates)k(an)g(empt)n(y)h(queue,)i Fo(queue?)77
b Fr(is)41 b(a)g(predicate)g(for)g(iden)n(tifying)739
1057 y(queues,)22 b(and)g Fo(queue-empty?)30 b Fr(tells)21
b(y)n(ou)g(if)h(a)f(queue)g(is)h(empt)n(y)-7 b(.)35 b
Fo(List->queue)17 b Fr(returns)k(a)739 1156 y(queue)g(con)n(taining)e
Fq(values)8 b Fr(,)22 b(preserving)d(their)i(order.)33
b Fo(Enqueue!)f Fr(adds)20 b(one)g(v)-5 b(alue)21 b(to)g(the)739
1256 y(queue;)g Fo(enqueue-many!)29 b Fr(adds)18 b(a)g(list)g(of)h(v)-5
b(alues)18 b(to)g(the)h(queue.)33 b Fo(Queue-head-or-val)o(ue)p
Fr(,)739 1356 y Fo(queue-head-or-th)o(un)o(k)p Fr(,)j
Fo(queue-head)p Fr(,)h(and)h Fo(maybe-queue-head)32 b
Fr(return)38 b(the)h(\014rst)739 1455 y(v)-5 b(alue)19
b(in)g Fq(queue)25 b Fr(if)20 b(it)f(is)g(not)h(empt)n(y;)i(if)d(the)h
(queue)f(is)g(empt)n(y)-7 b(,)21 b Fo(queue-head-or-va)o(lu)o(e)13
b Fr(re-)739 1555 y(turns)21 b Fq(value)7 b Fr(,)23 b
Fo(queue-head-or-th)o(un)o(k)15 b Fr(tail-calls)21 b
Fq(thunk)8 b Fr(,)23 b Fo(queue-head)17 b Fr(raises)j(an)h(error,)739
1654 y(and)j Fo(maybe-queue-head)19 b Fr(returns)24 b
Fo(#f)p Fr(.)35 b Fo(Dequeue-or-value)o(!)p Fr(,)19 b
Fo(dequeue-or-thunk!)o Fr(,)739 1754 y Fo(dequeue!)p
Fr(,)25 b(and)j Fo(maybe-dequeue!)k Fr(remo)n(v)n(e)27
b(a)g(v)-5 b(alue)28 b(from)g(the)g(queue)g(if)h(one)e(is)h(a)n(v)-5
b(ail-)739 1854 y(able;)21 b(if)e(the)g(queue)f(is)g(empt)n(y)-7
b(,)21 b Fo(dequeue-or-value)o(!)28 b Fr(returns)17 b
Fq(value)7 b Fr(,)20 b Fo(dequeue-or-thunk!)739 1953
y Fr(tail-calls)35 b Fq(thunk)8 b Fr(,)38 b Fo(dequeue!)59
b Fr(raises)34 b(an)i(error,)g(and)g Fo(maybe-dequeue!)56
b Fr(returns)35 b Fo(#f)p Fr(.)739 2053 y Fo(Empty-queue!)d
Fr(remo)n(v)n(es)25 b(all)j(v)-5 b(alues)27 b(from)g
Fq(queue)6 b Fr(.)863 2153 y Fo(\(Dequeue-or-value)o(!)81
b(q)43 b(value\))16 b Fr(is)j(more)e(e\016cien)n(t)i(than,)h(but)f
(otherwise)e(equiv-)739 2252 y(alen)n(t)27 b(to:)p Black
Black 739 2404 a Fo(\(ensure-atomicit)o(y)782 2504 y(\(if)43
b(\(queue-empty?)38 b(q\))957 2603 y(value)957 2703 y(\(dequeue!)i
(q\)\)\))863 2855 y Fr(Because)34 b Fo(queue-head)d Fr(and)k
Fo(dequeue!)56 b Fr(raise)34 b(exceptions)g(if)i(they)f(are)f(called)h
(on)739 2954 y(an)28 b(empt)n(y)g(queue,)g(they)h Fq(must)g(not)f
Fr(b)r(e)g(called)g(with)h(a)f(prop)r(osal)e(already)h(activ)n(e)g
(unless)739 3054 y Fo(queue-empty?)32 b Fr(has)27 b(returned)g
Fo(#f)g Fr(with)h(the)g(same)f(prop)r(osal)f(activ)n(e.)863
3153 y(The)c(follo)n(wing)f(pro)r(cedures)g(are)g(not)g(used)h(in)g
(the)g(Sc)n(heme)g(48)f(system,)i(and)f(are)e Fq(very)739
3253 y Fr(slo)n(w.)38 b(These)29 b(op)r(erations)e(ma)n(y)g(b)r(e)i
(remo)n(v)n(ed)e(from)h(the)h Fo(queues)d Fr(structure)i(in)h(a)f
(future)739 3353 y(revision.)p Black 755 3505 a Fn(\017)p
Black 42 w Fo(\(queue-length)36 b Fq(queue)6 b Fo(\))41
b Fn(!)g Fq(inte)l(ger)p Black 755 3604 a Fn(\017)p Black
42 w Fo(\(queue->list)36 b Fq(queue)6 b Fo(\))41 b Fn(!)h
Fq(values)p Black 755 3704 a Fn(\017)p Black 42 w Fo(\(delete-from-qu)o
(eu)o(e!)i Fq(queue)d(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 755 3803 a Fn(\017)p Black 42 w Fo(\(on-queue?)k
Fq(queue)d(value)6 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)739
3955 y Fo(Queue-length)32 b Fr(returns)37 b(the)h(n)n(um)n(b)r(er)f(of)
g(v)-5 b(alues)37 b(in)g Fq(queue)6 b Fr(.)66 b Fo(Queue->list)33
b Fr(returns)739 4055 y(the)41 b(v)-5 b(alues)39 b(in)i
Fq(queue)46 b Fr(as)40 b(a)g(list,)k(in)c(the)h(order)e(in)h(whic)n(h)g
(the)h(v)-5 b(alues)40 b(w)n(ere)f(added.)739 4154 y
Fo(Delete-from-queu)o(e!)28 b Fr(remo)n(v)n(es)17 b(the)j(\014rst)f
(instance)g(of)h Fq(value)26 b Fr(from)19 b Fq(queue)6
b Fr(,)22 b(using)e Fo(eqv?)739 4254 y Fr(for)k(comparisons.)35
b Fo(Delete-from-que)o(ue!)29 b Fr(returns)c Fo(#t)f
Fr(if)i(it)f(remo)n(v)n(es)e(an)i(elemen)n(t)g(and)739
4354 y Fo(#f)g Fr(if)h(it)h(do)r(es)e(not.)36 b Fo(On-queue?)d
Fr(returns)25 b Fo(#t)g Fr(if)i Fq(value)32 b Fr(is)26
b(in)g(the)g Fq(queue)32 b Fr(\(using)27 b Fo(eqv?)35
b Fr(for)739 4453 y(comparisons\))26 b(and)h Fo(#f)g
Fr(if)h(it)g(is)g(not.)739 4725 y Fj(5.8)135 b(Arra)l(ys)739
4907 y Fr(These)19 b(pro)n(vide)g(N-dimensional,)h(zero-based)e(arra)n
(ys)f(and)i(are)g(in)h(the)g(structure)f Fo(arrays)p
Fr(.)739 5006 y(The)28 b(arra)n(y)d(in)n(terface)i(is)g(deriv)n(ed)g
(from)g(one)g(in)n(v)n(en)n(ted)h(b)n(y)f(Alan)h(Ba)n(wden.)p
Black 2130 5255 a(42)p Black eop end
%%Page: 43 51
TeXDict begin 43 50 bop 0 TeXcolorgray Black Black Black
Black 307 523 a Fn(\017)p Black 41 w Fo(\(make-array)37
b Fq(value)42 b(dimension)1505 535 y Fk(0)1585 523 y
Fq(.)13 b(.)g(.)g Fo(\))51 b Fn(!)42 b Fq(arr)l(ay)p
Black 307 623 a Fn(\017)p Black 41 w Fo(\(array)d Fq(dimensions)k
(element)1416 635 y Fk(0)1495 623 y Fq(.)13 b(.)g(.)g
Fo(\))50 b Fn(!)42 b Fq(arr)l(ay)p Black 307 722 a Fn(\017)p
Black 41 w Fo(\(copy-array)37 b Fq(arr)l(ay)7 b Fo(\))43
b Fn(!)e Fq(arr)l(ay)291 871 y Fo(Make-array)23 b Fr(mak)n(es)k(a)g
(new)g(arra)n(y)f(with)i(the)g(giv)n(en)f(dimensions,)g(eac)n(h)g(of)g
(whic)n(h)h(m)n(ust)291 970 y(b)r(e)21 b(a)h(non-negativ)n(e)d(in)n
(teger.)34 b(Ev)n(ery)20 b(elemen)n(t)i(is)f(initially)h(set)f(to)h
Fq(value)6 b Fr(.)36 b Fo(Array)19 b Fr(Returns)291 1070
y(a)j(new)h(arra)n(y)e(with)i(the)h(giv)n(en)e(dimensions)g(and)h
(elemen)n(ts.)35 b Fq(Dimensions)c Fr(m)n(ust)23 b(b)r(e)g(a)g(list)291
1169 y(of)h(p)r(ositiv)n(e)g(in)n(tegers,)g(The)g(n)n(um)n(b)r(er)g(of)
g(elemen)n(ts)h(should)f(b)r(e)g(the)h(equal)f(to)g(the)h(pro)r(duct)
291 1269 y(of)i(the)h(dimensions.)37 b(The)27 b(elemen)n(ts)h(are)e
(stored)h(in)h(ro)n(w-ma)5 b(jor)25 b(order.)p Black
Black 291 1434 a Fo(\(make-array)39 b('a)j(2)i(3\))e
Fn(!)i(f)p Fo(Array)d(2)i(3)p Fn(g)291 1633 y Fo(\(array)e('\(2)h(3\))h
('a)g('b)f('c)h('d)g('e)g('f\))465 1733 y Fn(!)h(f)p
Fo(Array)d(2)i(3)p Fn(g)415 1898 y Fo(Copy-array)23 b
Fr(returns)j(a)g(cop)n(y)g(of)33 b Fq(arr)l(ay)7 b Fr(.)38
b(The)27 b(cop)n(y)f(is)h(iden)n(tical)f(to)h(the)g Fq(arr)l(ay)35
b Fr(but)291 1997 y(do)r(es)27 b(not)g(share)g(storage)f(with)i(it.)p
Black 307 2146 a Fn(\017)p Black 41 w Fo(\(array?)47
b Fq(value)6 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)291
2294 y Fr(Returns)27 b Fo(#t)g Fr(if)34 b Fq(value)h
Fr(is)27 b(an)h(arra)n(y)-7 b(.)p Black 307 2442 a Fn(\017)p
Black 41 w Fo(\(array-ref)38 b Fq(arr)l(ay)k(index)1291
2454 y Fk(0)1370 2442 y Fq(.)13 b(.)g(.)g Fo(\))51 b
Fn(!)41 b Fq(value)p Black 307 2542 a Fn(\017)p Black
41 w Fo(\(array-set!)c Fq(arr)l(ay)43 b(value)f(index)1561
2554 y Fk(0)1640 2542 y Fq(.)13 b(.)g(.)g Fo(\))p Black
307 2641 a Fn(\017)p Black 41 w Fo(\(array->vector)36
b Fq(arr)l(ay)7 b Fo(\))42 b Fn(!)g Fq(ve)l(ctor)p Black
307 2741 a Fn(\017)p Black 41 w Fo(\(array-shape)37 b
Fq(arr)l(ay)7 b Fo(\))42 b Fn(!)g Fq(list)291 2889 y
Fo(Array-ref)32 b Fr(returns)j(the)h(sp)r(eci\014ed)h(arra)n(y)c
(elemen)n(t)j(and)g Fo(array-set!)58 b Fr(replaces)35
b(the)291 2989 y(elemen)n(t)27 b(with)h Fq(value)6 b
Fr(.)p Black Black 291 3154 a Fo(\(let)42 b(\(\(a)g(\(array)f('\(2)h
(3\))h('a)g('b)g('c)f('d)h('e)g('f\)\)\))378 3253 y(\(let)f(\(\(x)g
(\(array-ref)d(a)44 b(0)f(1\)\)\))465 3353 y(\(array-set!)c(a)k('g)g(0)
g(1\))465 3453 y(\(list)e(x)j(\(array-ref)39 b(a)k(0)g(1\)\)\)\))465
3552 y Fn(!)h Fo('\(b)e(g\))415 3717 y(Array->vector)29
b Fr(returns)34 b(a)h(v)n(ector)e(con)n(taining)h(the)h(elemen)n(ts)f
(of)41 b Fq(arr)l(ay)j Fr(in)34 b(ro)n(w-)291 3817 y(ma)5
b(jor)26 b(order.)35 b Fo(Array-shape)24 b Fr(returns)i(the)i
(dimensions)g(of)f(the)h(arra)n(y)e(as)g(a)i(list.)p
Black 307 3965 a Fn(\017)p Black 41 w Fo(\(make-shared-arra)o(y)35
b Fq(arr)l(ay)43 b(line)l(ar-map)f(dimension)2245 3977
y Fk(0)2325 3965 y Fq(.)13 b(.)g(.)g Fo(\))51 b Fn(!)42
b Fq(arr)l(ay)291 4113 y Fo(Make-shared-arr)o(ay)34 b
Fr(mak)n(es)k(a)i(new)g(arra)n(y)e(that)i(shares)e(storage)g(with)j
Fq(arr)l(ay)48 b Fr(and)291 4213 y(uses)27 b Fq(line)l(ar-map)34
b Fr(to)27 b(map)h(indexes)f(to)h(elemen)n(ts.)37 b Fq(Line)l(ar-map)d
Fr(m)n(ust)27 b(accept)h(as)f(man)n(y)291 4312 y(argumen)n(ts)32
b(as)g(the)i(n)n(um)n(b)r(er)f(of)39 b Fq(dimension)6
b Fr(s)35 b(giv)n(en)e(and)g(m)n(ust)g(return)g(a)g(list)g(of)g(non-)
291 4412 y(negativ)n(e)26 b(in)n(tegers)g(that)i(are)f(v)-5
b(alid)28 b(indexes)f(in)n(to)g Fq(arr)l(ay)7 b Fr(.)p
Black Black 291 4577 a Fo(\(array-ref)39 b(\(make-shared-arr)o(ay)e(a)
43 b(f)h(i0)e(i1)h(...\))770 4677 y(j0)g(j1)g(...\))291
4841 y Fr(is)27 b(equiv)-5 b(alen)n(t)27 b(to)p Black
Black 291 5006 a Fo(\(apply)41 b(array-ref)f(a)j(\(f)f(j0)h(j1)g
(...\)\))p Black 1681 5255 a Fr(43)p Black eop end
%%Page: 44 52
TeXDict begin 44 51 bop 0 TeXcolorgray Black Black Black
863 523 a Fr(As)19 b(an)f(example,)i(the)f(follo)n(wing)e(function)i
(mak)n(es)e(the)i(transp)r(ose)e(of)h(a)g(t)n(w)n(o-dimensional)739
623 y(arra)n(y:)p Black Black 739 790 a Fo(\(define)41
b(\(transpose)e(array\))826 889 y(\(let)j(\(\(shape)f(\(array-shape)d
(array\)\)\))913 989 y(\(make-shared-arra)o(y)f(array)1741
1089 y(\(lambda)k(\(x)i(y\))1829 1188 y(\(list)e(y)i(x\)\))1741
1288 y(\(cadr)f(shape\))1741 1388 y(\(car)g(shape\)\)\)\))739
1587 y(\(array->vector)826 1686 y(\(transpose)913 1786
y(\(array)f('\(2)i(3\))f('a)h('b)g('c)g('d)f('e)h('f\)\)\))1000
1886 y Fn(!)h Fo('\(a)e(d)i(b)f(e)g(c)g(f\))739 2162
y Fj(5.9)135 b(Records)739 2344 y Fr(New)29 b(t)n(yp)r(es)g(can)f(b)r
(e)h(constructed)f(using)h(the)g Fo(define-record-t)o(ype)22
b Fr(macro)27 b(from)i(the)739 2444 y Fo(define-record-ty)o(pe)o(s)22
b Fr(structure)27 b(The)g(general)g(syn)n(tax)f(is:)p
Black Black 739 2611 a Fo(\(define-record-t)o(yp)o(e)38
b([)p Fq(tag)7 b Fo(])43 b Fq(typ)l(e-name)826 2711 y
Fo(\()p Fq(c)l(onstructor-name)49 b(\014eld-tag)i Fo(...\))826
2810 y Fq(pr)l(e)l(dic)l(ate-name)826 2910 y Fo(\()p
Fq(\014eld-tag)g(ac)l(c)l(essor-name)g Fo([)p Fq(mo)l(di\014er-name)6
b Fo(]\))826 3009 y(...\))739 3176 y Fr(This)27 b(mak)n(es)g(the)h
(follo)n(wing)f(de\014nitions:)p Black 755 3343 a Fn(\017)p
Black 42 w Fq(typ)l(e-name)2236 b Fr(t)n(yp)r(e)p Black
755 3443 a Fn(\017)p Black 42 w Fo(\()p Fq(c)l(onstructor-name)46
b(\014eld-init)c(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41 b
Fq(typ)l(e-name)p Black 755 3542 a Fn(\017)p Black 42
w Fo(\()p Fq(pr)l(e)l(dic)l(ate-name)48 b(value)6 b Fo(\))42
b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 755 3642 a Fn(\017)p
Black 42 w Fo(\()p Fq(ac)l(c)l(essor-name)48 b(typ)l(e-name)6
b Fo(\))41 b Fn(!)h Fq(value)p Black 755 3742 a Fn(\017)p
Black 42 w Fo(\()p Fq(mo)l(di\014er-name)48 b(typ)l(e-name)41
b(value)6 b Fo(\))739 3909 y Fq(T)-6 b(yp)l(e-name)35
b Fr(is)27 b(the)h(record)f(t)n(yp)r(e)h(itself,)g(and)g(can)f(b)r(e)h
(used)g(to)g(sp)r(ecify)g(a)f(prin)n(t)h(metho)r(d)739
4008 y(\(see)40 b(b)r(elo)n(w\).)76 b Fq(Constructor-name)46
b Fr(is)40 b(a)g(constructor)f(that)i(accepts)f(v)-5
b(alues)40 b(for)g(the)739 4108 y(\014elds)22 b(whose)g(tags)g(are)f
(sp)r(eci\014ed.)36 b Fq(Pr)l(e)l(dic)l(ate-name)29 b
Fr(is)23 b(a)f(predicate)g(that)g(returns)g Fo(#t)g Fr(for)739
4208 y(elemen)n(ts)f(of)g(the)h(t)n(yp)r(e)f(and)g Fo(#f)g
Fr(for)f(ev)n(erything)g(else.)35 b(The)21 b Fq(ac)l(c)l(essor-name)6
b Fr(s)22 b(retriev)n(e)e(the)739 4307 y(v)-5 b(alues)29
b(of)g(\014elds,)h(and)f(the)g Fq(mo)l(di\014er-name)6
b Fr('s)30 b(up)r(date)g(them.)43 b Fq(T)-6 b(ag)37 b
Fr(is)29 b(used)g(in)h(prin)n(ting)739 4407 y(instances)e(of)g(the)h
(record)d(t)n(yp)r(e)j(and)f(the)h Fq(\014eld-tag)7 b
Fr(s)29 b(are)e(used)h(in)h(the)f(insp)r(ector)g(and)g(to)739
4506 y(matc)n(h)j(constructor)g(argumen)n(ts)f(with)i(\014elds.)50
b(If)38 b Fq(tag)i Fr(is)31 b(not)h(sp)r(eci\014ed,)h
Fq(typ)l(e-name)38 b Fr(is)739 4606 y(used)27 b(instead.)p
Black 755 4756 a Fn(\017)p Black 42 w Fo(\(define-record-)o(di)o(scl)o
(os)o(er)35 b Fq(typ)l(e)42 b(discloser)9 b Fo(\))739
4907 y(Define-record-di)o(sc)o(los)o(er)30 b Fr(determines)36
b(ho)n(w)g(records)f(of)i(t)n(yp)r(e)g Fq(typ)l(e)43
b Fr(are)35 b(prin)n(ted.)739 5006 y Fq(Discloser)49
b Fr(should)39 b(b)r(e)g(pro)r(cedure)f(whic)n(h)h(tak)n(es)f(a)h
(single)f(record)g(of)h(t)n(yp)r(e)g Fq(typ)l(e)45 b
Fr(and)p Black 2130 5255 a(44)p Black eop end
%%Page: 45 53
TeXDict begin 45 52 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(returns)32 b(a)i(list)f(whose)g(car)g(is)g(a)h(sym)n(b)r
(ol.)54 b(The)34 b(record)e(will)i(b)r(e)g(prin)n(ted)f(as)g(the)h(v)-5
b(alue)291 623 y(returned)27 b(b)n(y)h Fq(discloser)39
b Fr(with)28 b(curly)f(braces)f(used)i(instead)f(of)h(the)g(usual)f
(paren)n(thesis.)415 722 y(F)-7 b(or)27 b(example)p Black
Black 291 867 a Fo(\(define-record-)o(typ)o(e)37 b(pare)42
b(:pare)378 966 y(\(kons)f(x)i(y\))378 1066 y(pare?)378
1165 y(\(x)g(kar)f(set-kar!\))378 1265 y(\(y)h(kdr\)\))291
1409 y Fr(de\014nes)27 b Fo(kons)g Fr(to)g(b)r(e)h(a)g(constructor,)e
Fo(kar)h Fr(and)h Fo(kdr)e Fr(to)i(b)r(e)g(accessors,)e
Fo(set-kar!)34 b Fr(to)28 b(b)r(e)291 1509 y(a)33 b(mo)r(di\014er,)j
(and)e Fo(pare?)54 b Fr(to)34 b(b)r(e)h(a)e(predicate)h(for)f(a)h(new)g
(t)n(yp)r(e)g(of)g(ob)5 b(ject.)57 b(The)34 b(t)n(yp)r(e)291
1608 y(itself)28 b(is)f(named)h Fo(:pare)p Fr(.)35 b
Fo(Pare)26 b Fr(is)h(a)g(tag)g(used)h(in)g(prin)n(ting)f(the)h(new)f
(ob)5 b(jects.)415 1708 y(By)36 b(default,)j(the)e(new)g(ob)5
b(jects)35 b(prin)n(t)i(as)f Fo(#)p Fn(f)p Fo(Pare)p
Fn(g)p Fr(.)60 b(The)36 b(prin)n(t)h(metho)r(d)f(can)h(b)r(e)291
1808 y(mo)r(di\014ed)28 b(using)g Fo(define-record-di)o(scl)o(os)o(er)o
Fr(:)p Black Black 291 1952 a Fo(\(define-record-)o(dis)o(cl)o(os)o(er)
37 b(:pare)378 2052 y(\(lambda)j(\(p\))j(`\(pare)e(,\(kar)g(p\))i
(,\(kdr)f(p\)\)\)\))291 2196 y Fr(will)27 b(cause)g(the)h(result)g(of)
34 b Fo(\(kons)41 b(1)i(2\))27 b Fr(to)h(prin)n(t)f(as)g
Fo(#)p Fn(f)p Fo(Pare)41 b(1)i(2)p Fn(g)p Fr(.)415 2295
y Fo(Define-record-re)o(sum)o(er)20 b Fr(\(section)p
0 0 1 TeXcolorrgb 26 w(8.7.6)p Black(\))26 b(can)f(b)r(e)i(used)g(to)f
(con)n(trol)f(ho)n(w)h(records)291 2395 y(are)g(stored)h(in)h(heap)f
(images.)291 2623 y Fe(5.9.1)112 b(Lo)m(w-lev)m(el)39
b(access)f(to)f(records)291 2776 y Fr(Records)28 b(are)g(implemen)n
(ted)i(using)e(primitiv)n(e)h(ob)5 b(jects)29 b(exactly)g(analogous)d
(to)j(v)n(ectors.)291 2876 y(Ev)n(ery)c(record)h(has)h(a)f(record)g(t)n
(yp)r(e)i(\(whic)n(h)f(is)g(another)f(record\))g(in)i(the)f(\014rst)g
(slot.)37 b(Note)291 2975 y(that)21 b(use)g(of)g(these)g(pro)r
(cedures,)g(esp)r(ecially)h Fo(record-set!)p Fr(,)c(breaks)i(the)h
(record)f(abstrac-)291 3075 y(tion)27 b(describ)r(ed)h(ab)r(o)n(v)n(e;)
e(caution)h(is)h(advised.)415 3175 y(These)f(pro)r(cedures)g(are)f(in)i
(the)g(structure)f Fo(records)p Fr(.)p Black 307 3302
a Fn(\017)p Black 41 w Fo(\(make-record)37 b Fq(n)k(value)6
b Fo(\))42 b Fn(!)f Fq(r)l(e)l(c)l(or)l(d)p Black 307
3402 a Fn(\017)p Black 41 w Fo(\(record)e Fq(value)j(.)13
b(.)g(.)g Fo(\))51 b Fn(!)41 b Fq(r)l(e)l(c)l(or)l(d-ve)l(ctor)p
Black 307 3501 a Fn(\017)p Black 41 w Fo(\(record?)47
b Fq(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 307 3601 a Fn(\017)p Black 41 w Fo(\(record-length)36
b Fq(r)l(e)l(c)l(or)l(d)9 b Fo(\))41 b Fn(!)g Fq(inte)l(ger)p
Black 307 3701 a Fn(\017)p Black 41 w Fo(\(record-type)c
Fq(r)l(e)l(c)l(or)l(d)9 b Fo(\))41 b Fn(!)g Fq(value)p
Black 307 3800 a Fn(\017)p Black 41 w Fo(\(record-ref)c
Fq(r)l(e)l(c)l(or)l(d)42 b(i)8 b Fo(\))42 b Fn(!)g Fq(value)p
Black 307 3900 a Fn(\017)p Black 41 w Fo(\(record-set!)37
b Fq(r)l(e)l(c)l(or)l(d)42 b(i)g(value)6 b Fo(\))291
4028 y Fr(These)30 b(the)h(same)f(as)g(the)h(standard)e
Fo(vector-)f Fr(pro)r(cedures)i(except)g(that)h(they)g(op)r(erate)291
4127 y(on)24 b(records.)34 b(The)24 b(v)-5 b(alue)25
b(returned)f(b)n(y)h Fo(record-length)19 b Fr(includes)25
b(the)f(slot)h(holding)f(the)291 4227 y(record's)i(t)n(yp)r(e.)37
b Fo(\(record-type)h Fq(x)10 b Fo(\))27 b Fr(is)g(equiv)-5
b(alen)n(t)28 b(to)f Fo(\(record-ref)39 b Fq(x)53 b Fo(0\))p
Fr(.)291 4454 y Fe(5.9.2)112 b(Record)37 b(t)m(yp)s(es)291
4608 y Fr(Record)17 b(t)n(yp)r(es)h(are)g(themselv)n(es)g(records)e(of)
j(a)f(particular)f(t)n(yp)r(e)h(\(the)h(\014rst)f(slot)g(of)25
b Fo(:record-type)291 4707 y Fr(p)r(oin)n(ts)34 b(to)g(itself)6
b(\).)57 b(A)34 b(record)f(t)n(yp)r(e)h(con)n(tains)f(four)h(v)-5
b(alues:)50 b(the)34 b(name)g(of)g(the)g(record)291 4807
y(t)n(yp)r(e,)c(a)g(list)g(of)g(the)h(names)e(its)h(\014elds,)h(and)f
(pro)r(cedures)e(for)i(disclosing)f(and)h(resuming)291
4907 y(records)j(of)j(that)f(t)n(yp)r(e.)61 b(Pro)r(cedures)33
b(for)i(manipulating)h(them)g(are)e(in)i(the)f(structure)291
5006 y Fo(record-types)p Fr(.)p Black 1681 5255 a(45)p
Black eop end
%%Page: 46 54
TeXDict begin 46 53 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(make-record-ty)o(pe)35
b Fq(name)42 b(\014eld-names)7 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(c)l(or)l
(d-typ)l(e)p Black 755 623 a Fn(\017)p Black 42 w Fo(\(record-type?)i
Fq(value)6 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 755 722 a Fn(\017)p Black 42 w Fo(\(record-type-na)o(me)35
b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)6 b Fo(\))42 b Fn(!)f
Fq(symb)l(ol)p Black 755 822 a Fn(\017)p Black 42 w Fo
(\(record-type-fi)o(el)o(d-n)o(am)o(es)35 b Fq(r)l(e)l(c)l(or)l(d-typ)l
(e)6 b Fo(\))42 b Fn(!)f Fq(symb)l(ols)p Black 755 1024
a Fn(\017)p Black 42 w Fo(\(record-constru)o(ct)o(or)35
b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)42 b(\014eld-names)7
b Fo(\))41 b Fn(!)h Fq(pr)l(o)l(c)l(e)l(dur)l(e)p Black
755 1124 a Fn(\017)p Black 42 w Fo(\(record-predica)o(te)35
b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)6 b Fo(\))42 b Fn(!)f
Fq(pr)l(o)l(c)l(e)l(dur)l(e)p Black 755 1223 a Fn(\017)p
Black 42 w Fo(\(record-accesso)o(r)35 b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)
42 b(\014eld-name)6 b Fo(\))42 b Fn(!)f Fq(pr)l(o)l(c)l(e)l(dur)l(e)p
Black 755 1323 a Fn(\017)p Black 42 w Fo(\(record-modifie)o(r)35
b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)42 b(\014eld-name)6 b
Fo(\))42 b Fn(!)f Fq(pr)l(o)l(c)l(e)l(dur)l(e)739 1474
y Fr(These)18 b(pro)r(cedures)f(construct)h(the)h(usual)f
(record-manipulating)e(pro)r(cedures.)33 b Fo(Record-construc)o(to)o(r)
739 1574 y Fr(returns)24 b(a)g(constructor)f(that)i(is)f(passed)g(the)h
(initial)g(v)-5 b(alues)24 b(for)g(the)h(\014elds)g(sp)r(eci\014ed)f
(and)739 1673 y(returns)29 b(a)h(new)g(record.)42 b Fo
(Record-predicate)24 b Fr(returns)29 b(a)g(predicate)h(that)g(return)f
(true)739 1773 y(when)23 b(passed)e(a)h(record)f(of)i(t)n(yp)r(e)g
Fq(r)l(e)l(c)l(or)l(d-typ)l(e)29 b Fr(and)22 b(false)g(otherwise.)34
b Fo(Record-accessor)739 1872 y Fr(and)29 b Fo(record-modifier)23
b Fr(return)29 b(pro)r(cedures)f(that)i(reference)e(and)h(set)h(the)f
(giv)n(en)g(\014eld)739 1972 y(in)f(records)e(of)h(the)h(appropriate)e
(t)n(yp)r(e.)p Black 755 2123 a Fn(\017)p Black 42 w
Fo(\(define-record-)o(di)o(scl)o(os)o(er)35 b Fq(r)l(e)l(c)l(or)l
(d-typ)l(e)42 b(discloser)9 b Fo(\))p Black 755 2223
a Fn(\017)p Black 42 w Fo(\(define-record-)o(re)o(sum)o(er)35
b Fq(r)l(e)l(c)l(or)l(d-typ)l(e)42 b(r)l(esumer)9 b Fo(\))739
2373 y(Record-types)k Fr(is)19 b(the)f(initial)h(exp)r(orter)f(of)24
b Fo(define-record-dis)o(cl)o(ose)o(r)12 b Fr(\(re-exp)r(orted)739
2473 y(b)n(y)32 b Fo(define-record-typ)o(es)25 b Fr(describ)r(ed)31
b(ab)r(o)n(v)n(e\))g(and)g Fo(define-record-re)o(su)o(mer)25
b Fr(\(re-)739 2573 y(exp)r(orted)i(b)n(y)i Fo(external-calls)21
b Fr(\(section)p 0 0 1 TeXcolorrgb 28 w(8.7.6)p Black(\)\).)863
2673 y(The)30 b(pro)r(cedures)f(describ)r(ed)g(in)h(this)h(section)e
(can)g(b)r(e)i(used)e(to)h(de\014ne)g(new)g(record-)739
2772 y(t)n(yp)r(e-de\014ning)d(macros.)p Black Black
739 2940 a Fo(\(define-record-t)o(yp)o(e)38 b(pare)k(:pare)826
3040 y(\(kons)g(x)h(y\))826 3140 y(pare?)826 3239 y(\(x)g(kar)f
(set-kar!\))826 3339 y(\(y)h(kdr\)\))739 3506 y Fr(is)27
b(\(seman)n(tically\))g(equiv)-5 b(alen)n(t)28 b(to)p
Black Black 739 3674 a Fo(\(define)41 b(:pare)g(\(make-record-typ)o(e)d
('pare)j('\(x)i(y\)\)\))739 3774 y(\(define)e(kons)h(\(record-constru)o
(ct)o(or)37 b(:pare)42 b('\(x)g(y\)\)\))739 3874 y(\(define)f(kar)h
(\(record-accessor)37 b(:pare)k('x\)\))739 3973 y(\(define)g(set-kar!)f
(\(record-modifier)d(:pare)k('x\)\))739 4073 y(\(define)g(kdr)h
(\(record-accessor)37 b(:pare)k('y\)\))863 4240 y Fr(The)32
b(\\\(seman)n(tically\)")e(ab)r(o)n(v)n(e)g(is)i(b)r(ecause)f
Fo(define-record-ty)o(pe)25 b Fr(adds)31 b(declara-)739
4340 y(tions,)25 b(whic)n(h)f(allo)n(ws)f(the)i(t)n(yp)r(e)f(c)n(hec)n
(k)n(er)e(to)j(detect)f(some)g(misuses)g(of)g(records,)g(and)g(uses)739
4440 y(more)h(e\016cien)n(t)h(de\014nitions)g(for)f(the)i(constructor,)
d(accessors,)g(and)i(mo)r(di\014ers.)36 b(Ignoring)739
4539 y(the)22 b(declarations,)f(whic)n(h)h(will)g(ha)n(v)n(e)e(to)i(w)n
(ait)f(for)g(another)g(edition)g(of)h(the)g(man)n(ual,)g(what)739
4639 y(the)28 b(ab)r(o)n(v)n(e)e(example)h(actually)g(expands)g(in)n
(to)h(is:)p Black Black 739 4807 a Fo(\(define)41 b(:pare)g
(\(make-record-typ)o(e)d('pare)j('\(x)i(y\)\)\))739 4907
y(\(define)e(\(kons)g(x)i(y\))g(\(record)e(:pare)g(x)i(y\)\))739
5006 y(\(define)e(\(kar)h(r\))g(\(checked-record-r)o(ef)37
b(r)43 b(:pare)f(1\)\))p Black 2130 5255 a Fr(46)p Black
eop end
%%Page: 47 55
TeXDict begin 47 54 bop 0 TeXcolorgray Black Black Black
291 523 a Fo(\(define)40 b(\(set-kar!)g(r)j(new\))378
623 y(\(checked-record-)o(se)o(t!)37 b(r)43 b(:pare)f(1)h(new\)\))291
722 y(\(define)d(\(kdr)i(r\))h(\(checked-record-)o(ref)37
b(r)43 b(:pare)e(2\)\))291 889 y(Checked-record-)o(ref)17
b Fr(and)23 b Fo(Checked-record-s)o(et)o(!)29 b Fr(are)23
b(lo)n(w-lev)n(el)f(pro)r(cedures)g(that)291 989 y(c)n(hec)n(k)j(the)j
(t)n(yp)r(e)f(of)f(the)h(record)f(and)g(access)g(or)g(mo)r(dify)h(it)g
(using)g(a)f(single)g(VM)h(instruc-)291 1088 y(tion.)291
1364 y Fj(5.10)135 b(Finite)46 b(record)e(t)l(yp)t(es)291
1547 y Fr(The)30 b(structure)h Fo(finite-types)26 b Fr(has)k(t)n(w)n(o)
g(macros)f(for)h(de\014ning)h(`\014nite')h(record)d(t)n(yp)r(es.)291
1646 y(These)j(are)f(record)g(t)n(yp)r(es)h(for)g(whic)n(h)g(there)h
(are)e(a)h(\014xed)g(n)n(um)n(b)r(er)g(of)h(instances,)g(all)f(of)291
1746 y(whic)n(h)h(are)g(created)g(at)h(the)g(same)g(time)g(as)f(the)i
(record)d(t)n(yp)r(e)i(itself.)57 b(The)33 b(syn)n(tax)g(for)291
1846 y(de\014ning)27 b(an)h(en)n(umerated)e(t)n(yp)r(e)i(is:)p
Black Black 291 2013 a Fo(\(define-enumera)o(ted)o(-t)o(yp)o(e)38
b Fq(tag)51 b(typ)l(e-name)378 2113 y(pr)l(e)l(dic)l(ate-name)378
2212 y(ve)l(ctor-of-instanc)l(es-name)378 2312 y(name-ac)l(c)l(essor)
378 2411 y(index-ac)l(c)l(essor)378 2511 y Fo(\()p Fq(instanc)l(e-name)
e Fo(...\)\))291 2678 y Fr(This)33 b(de\014nes)g(a)g(new)g(record)e(t)n
(yp)r(e,)k(b)r(ound)f(to)f Fq(typ)l(e-name)6 b Fr(,)35
b(with)e(as)g(man)n(y)f(instances)291 2778 y(as)j(there)g(are)g
Fq(instanc)l(e-name)6 b Fr('s.)62 b Fq(V)-6 b(e)l(ctor-of-instanc)l
(es-name)41 b Fr(is)36 b(b)r(ound)g(to)g(a)f(v)n(ector)291
2877 y(con)n(taining)g(the)i(instances)f(of)h(the)g(t)n(yp)r(e)f(in)h
(the)g(same)f(order)f(as)h(the)h Fq(instanc)l(e-name)291
2977 y Fr(list.)77 b Fq(T)-6 b(ag)49 b Fr(is)41 b(b)r(ound)h(to)f(a)g
(macro)e(that)j(when)f(giv)n(en)f(an)h Fq(instanc)l(e-name)47
b Fr(expands)291 3076 y(in)n(to)36 b(an)g(expression)e(that)j(returns)f
(corresp)r(onding)e(instance.)63 b(The)36 b(name)g(lo)r(okup)g(is)291
3176 y(done)25 b(at)h(macro)f(expansion)g(time.)37 b
Fq(Pr)l(e)l(dic)l(ate-name)c Fr(is)26 b(a)g(predicate)g(for)f(the)i
(new)f(t)n(yp)r(e.)291 3276 y Fq(Name-ac)l(c)l(essor)48
b Fr(and)39 b Fq(index-ac)l(c)l(essor)48 b Fr(are)38
b(accessors)f(for)h(the)h(name)g(and)f(index)h(\(in)291
3375 y Fq(ve)l(ctor-of-instanc)l(es)7 b Fr(\))28 b(of)f(instances)g(of)
h(the)g(t)n(yp)r(e.)p Black Black 291 3559 a Fo(\(define-enumera)o(ted)
o(-t)o(yp)o(e)38 b(color)j(:color)378 3659 y(color?)378
3759 y(colors)378 3858 y(color-name)378 3958 y(color-index)378
4058 y(\(black)g(white)g(purple)g(maroon\)\))291 4257
y(\(color-name)e(\(vector-ref)g(colors)i(0\)\))h Fn(!)i
Fo(black)291 4356 y(\(color-name)39 b(\(color)i(white\)\))389
b Fn(!)44 b Fo(white)291 4456 y(\(color-index)38 b(\(color)j
(purple\)\))302 b Fn(!)44 b Fo(2)415 4640 y Fr(Finite)27
b(t)n(yp)r(es)e(are)g(en)n(umerations)g(that)h(allo)n(w)e(the)i(user)f
(to)h(add)g(additional)f(\014elds)h(in)291 4739 y(the)i(t)n(yp)r(e.)37
b(The)27 b(syn)n(tax)g(for)g(de\014ning)h(a)f(\014nite)h(t)n(yp)r(e)g
(is:)p Black Black 291 4907 a Fo(\(define-finite-)o(typ)o(e)37
b Fq(tag)51 b(typ)l(e-name)378 5006 y Fo(\()p Fq(\014eld-tag)g
Fo(...\))p Black 1681 5255 a Fr(47)p Black eop end
%%Page: 48 56
TeXDict begin 48 55 bop 0 TeXcolorgray Black Black Black
826 523 a Fq(pr)l(e)l(dic)l(ate-name)826 623 y(ve)l(ctor-of-instanc)l
(es-name)826 722 y(name-ac)l(c)l(essor)826 822 y(index-ac)l(c)l(essor)
826 922 y Fo(\()p Fq(\014eld-tag)51 b(ac)l(c)l(essor-name)g
Fo([)p Fq(mo)l(di\014er-name)6 b Fo(]\))826 1021 y(...)826
1121 y(\(\()p Fq(instanc)l(e-name)49 b(\014eld-value)h
Fo(...\))870 1220 y(...\)\))739 1403 y Fr(The)32 b(additional)g
(\014elds)g(are)f(sp)r(eci\014ed)i(exactly)e(as)h(with)h
Fo(define-record-ty)o(pe)o Fr(.)45 b(The)739 1502 y(\014eld)30
b(argumen)n(ts)e(to)h(the)h(constructor)e(are)g(listed)i(after)f(the)h
Fq(typ)l(e-name)6 b Fr(;)31 b(these)e(do)g(not)739 1602
y(include)39 b(the)g(name)f(and)h(index)f(\014elds.)70
b(The)39 b(form)f(ends)g(with)h(the)g(names)f(and)h(the)739
1701 y(initial)21 b(\014eld)g(v)-5 b(alues)20 b(for)g(the)h(instances)f
(of)g(the)h(t)n(yp)r(e.)35 b(The)21 b(instances)f(are)f(constructed)i
(b)n(y)739 1801 y(applying)g(the)g(\(unnamed\))h(constructor)e(to)i
(these)f(initial)h(\014eld)f(v)-5 b(alues.)35 b(The)21
b(name)g(m)n(ust)739 1901 y(b)r(e)26 b(\014rst)g(and)f(the)i(remaining)
e(v)-5 b(alues)25 b(m)n(ust)h(matc)n(h)g(the)g Fq(\014eld-tag)7
b Fr(s)27 b(in)f(the)g(constructor's)739 2000 y(argumen)n(t)g(list.)p
Black Black 739 2210 a Fo(\(define-finite-t)o(yp)o(e)38
b(color)j(:color)826 2309 y(\(red)h(green)g(blue\))826
2409 y(color?)826 2509 y(colors)826 2608 y(color-name)826
2708 y(color-index)826 2808 y(\(red)129 b(color-red\))826
2907 y(\(green)41 b(color-green\))826 3007 y(\(blue)85
b(color-blue\))826 3106 y(\(\(black)172 b(0)130 b(0)g(0\))870
3206 y(\(white)84 b(255)43 b(255)f(255\))870 3306 y(\(purple)e(160)86
b(32)43 b(240\))870 3405 y(\(maroon)d(176)86 b(48)h(96\)\)\))739
3605 y(\(color-name)39 b(\(color)i(black\)\))389 b Fn(!)44
b Fo(black)739 3704 y(\(color-name)39 b(\(vector-ref)g(colors)i(1\)\))h
Fn(!)i Fo(white)739 3804 y(\(color-index)39 b(\(color)i(purple\)\))301
b Fn(!)44 b Fo(2)739 3903 y(\(color-red)39 b(\(color)i(maroon\)\))389
b Fn(!)44 b Fo(176)739 4206 y Fj(5.11)135 b(Sets)46 b(o)l(v)l(er)g
(\014nite)f(t)l(yp)t(es)739 4398 y Fr(The)35 b(structure)g
Fo(enum-sets)d Fr(has)j(a)g(macro)g(for)g(de\014ning)g(t)n(yp)r(es)h
(for)f(sets)g(of)g(elemen)n(ts)739 4498 y(of)43 b(\014nite)i(t)n(yp)r
(es.)85 b(These)43 b(w)n(ork)f(naturally)h(with)h(the)g(\014nite)g(t)n
(yp)r(es)g(de\014ned)g(b)n(y)f(the)739 4598 y Fo(finite-types)33
b Fr(structure,)40 b(but)e(are)f(not)h(tied)g(to)f(them.)68
b(The)38 b(syn)n(tax)f(for)g(de\014ning)739 4697 y(suc)n(h)27
b(a)g(t)n(yp)r(e)h(is:)p Black Black 739 4907 a Fo(\(define-enum-set)o
(-t)o(ype)37 b Fq(id)53 b(typ)l(e-name)d(pr)l(e)l(dic)l(ate)h(c)l
(onstructor)870 5006 y(element-syntax)h(element-pr)l(e)l(dic)l(ate)f
(al)t(l-elements)g(element-index-r)l(ef)18 b Fo(\))p
Black 2130 5255 a Fr(48)p Black eop end
%%Page: 49 57
TeXDict begin 49 56 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(This)39 b(de\014nes)g Fq(id)49 b Fr(to)39
b(b)r(e)h(syn)n(tax)f(for)g(constructing)f(sets,)k Fq(typ)l(e-name)k
Fr(to)39 b(b)r(e)h(a)f(v)-5 b(alue)291 623 y(represen)n(ting)21
b(the)j(t)n(yp)r(e,)g Fq(pr)l(e)l(dic)l(ate)31 b Fr(to)23
b(b)r(e)h(a)e(predicate)h(for)g(those)g(sets,)g(and)g
Fq(c)l(onstructor)291 722 y Fr(a)k(pro)r(cedure)f(for)h(constructing)g
(one)g(from)h(a)f(list.)415 822 y Fq(Element-syntax)38
b Fr(m)n(ust)28 b(b)r(e)g(the)h(name)f(of)g(a)g(macro)f(for)g
(constructing)h(set)g(elemen)n(ts)291 922 y(from)22 b(names)h(\(akin)g
(to)g(the)g Fq(tag)31 b Fr(argumen)n(t)22 b(to)g Fo(define-enumerated)o
(-ty)o(pe)o Fr(\).)30 b Fq(Element-)291 1021 y(pr)l(e)l(dic)l(ate)36
b Fr(m)n(ust)28 b(b)r(e)h(a)f(predicate)g(for)g(the)h(elemen)n(t)g(t)n
(yp)r(e,)g Fq(al)t(l-elements)36 b Fr(a)28 b(v)n(ector)g(of)g(all)291
1121 y(v)-5 b(alues)29 b(of)g(the)h(elemen)n(t)g(t)n(yp)r(e,)g(and)g
Fq(element-index-r)l(ef)47 b Fr(m)n(ust)30 b(return)f(the)h(index)g(of)
f(an)291 1220 y(elemen)n(t)e(within)i(the)f Fq(al)t(l-elements)35
b Fr(v)n(ector.)p Black 307 1365 a Fn(\017)p Black 41
w Fo(\(enum-set->list)h Fq(enum-set)8 b Fo(\))39 b Fn(!)j
Fq(list)p Black 307 1465 a Fn(\017)p Black 41 w Fo(\(enum-set-member?)h
Fq(enum-set)d(enumer)l(and)9 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 307 1564 a Fn(\017)p Black 41 w Fo(\(enum-set=?)46
b Fq(enum-set)40 b(enum-set)8 b Fo(\))40 b Fn(!)h Fq(b)l(o)l(ole)l(an)p
Black 307 1664 a Fn(\017)p Black 41 w Fo(\(enum-set-subset?)i
Fq(enum-set)d(enum-set)8 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)p
Black 307 1764 a Fn(\017)p Black 41 w Fo(\(enum-set-union)36
b Fq(enum-set)k(enum-set)8 b Fo(\))39 b Fn(!)j Fq(enum-set)p
Black 307 1863 a Fn(\017)p Black 41 w Fo(\(enum-set-interse)o(ct)o(ion)
35 b Fq(enum-set)40 b(enum-set)8 b Fo(\))40 b Fn(!)83
b Fq(enum-set)p Black 307 1963 a Fn(\017)p Black 41 w
Fo(\(enum-set-differe)o(nc)o(e)35 b Fq(enum-set)41 b(enum-set)8
b Fo(\))39 b Fn(!)83 b Fq(enum-set)p Black 307 2063 a
Fn(\017)p Black 41 w Fo(\(enum-set-negatio)o(n)35 b Fq(enum-set)8
b Fo(\))40 b Fn(!)i Fq(enum-set)291 2207 y Fo(Enum-set->list)25
b Fr(con)n(v)n(erts)30 b(a)h(set)g(in)n(to)h(a)f(list)g(of)h(its)f
(elemen)n(ts.)48 b Fo(Enum-set-member?)291 2307 y Fr(tests)41
b(for)g(mem)n(b)r(ership.)79 b Fo(Enum-set=?)c Fr(tests)42
b(t)n(w)n(o)f(sets)g(of)h(equal)f(t)n(yp)r(e)h(for)f(equal-)291
2406 y(it)n(y)-7 b(.)74 b(\(If)40 b(its)h(argumen)n(ts)d(are)h(not)h
(of)g(the)g(same)g(t)n(yp)r(e,)j Fo(enum-set=?)70 b Fr(raises)39
b(an)g(ex-)291 2506 y(ception.\))80 b Fo(Enum-set-subset?)74
b Fr(tests,)46 b(for)41 b(t)n(w)n(o)h(sets)f(of)i(equal)e(t)n(yp)r(e,)
46 b(if)d(the)f(\014rst)291 2606 y(set)f(is)g(a)f(subset)i(of)f(the)g
(second)g(one.)77 b Fo(Enum-set-union)35 b Fr(computes)41
b(the)h(union)f(of)291 2705 y(t)n(w)n(o)h(sets)g(of)h(equal)f(t)n(yp)r
(e,)47 b Fo(enum-set-interse)o(ct)o(ion)36 b Fr(computes)43
b(the)g(in)n(tersection,)291 2805 y Fo(enum-set-differ)o(enc)o(e)12
b Fr(computes)18 b(the)h(in)n(tersection,)h(and)e Fo(enum-set-negatio)o
(n)12 b Fr(com-)291 2905 y(putes)27 b(the)h(complemen)n(t)g(of)g(a)f
(set.)415 3004 y(Here)g(is)h(an)f(example.)37 b(Giv)n(en)27
b(an)g(en)n(umerated)g(t)n(yp)r(e:)p Black Black 291
3181 a Fo(\(define-enumera)o(ted)o(-t)o(yp)o(e)38 b(color)j(:color)378
3281 y(color?)378 3380 y(colors)378 3480 y(color-name)378
3579 y(color-index)378 3679 y(\(red)h(blue)g(green\)\))415
3856 y Fr(w)n(e)27 b(can)h(de\014ne)f(sets)h(of)f(colors:)p
Black Black 291 4032 a Fo(\(define-enum-se)o(t-t)o(yp)o(e)37
b(color-set)j(:color-set)1249 4132 y(color-set?)1249
4232 y(make-color-set)378 4331 y(color)h(color?)g(colors)g
(color-index\))p Black Black 291 4508 a(>)i(\(enum-set->list)37
b(\(color-set)j(red)i(blue\)\))291 4608 y(\(#{Color)e(red})i(#{Color)e
(blue}\))291 4707 y(>)j(\(enum-set->list)37 b(\(enum-set-negatio)o(n)g
(\(color-set)j(red)i(blue\)\)\))291 4807 y(\(#{Color)e(green}\))291
4907 y(>)j(\(enum-set-member)o(?)37 b(\(color-set)j(red)i(blue\))g
(\(color)f(blue\)\))291 5006 y(#t)p Black 1681 5255 a
Fr(49)p Black eop end
%%Page: 50 58
TeXDict begin 50 57 bop 0 TeXcolorgray Black Black Black
739 523 a Fj(5.12)135 b(Hash)46 b(tables)739 709 y Fr(These)20
b(are)f(generic)g(hash)h(tables,)h(and)f(are)f(in)i(the)f(structure)g
Fo(tables)p Fr(.)32 b(Strictly)20 b(sp)r(eaking)739 808
y(they)32 b(are)f(more)h(maps)g(than)g(tables,)h(as)f(ev)n(ery)e(table)
j(has)e(a)h(v)-5 b(alue)32 b(for)g(ev)n(ery)f(p)r(ossible)739
908 y(k)n(ey)c(\(for)g(that)h(t)n(yp)r(e)g(of)f(table\).)38
b(All)28 b(but)g(a)f(\014nite)h(n)n(um)n(b)r(er)f(of)h(those)f(v)-5
b(alues)27 b(are)g Fo(#f)p Fr(.)p Black 755 1063 a Fn(\017)p
Black 42 w Fo(\(make-table\))36 b Fn(!)42 b Fq(table)p
Black 755 1163 a Fn(\017)p Black 42 w Fo(\(make-symbol-ta)o(bl)o(e\))35
b Fn(!)42 b Fq(symb)l(ol-table)p Black 755 1263 a Fn(\017)p
Black 42 w Fo(\(make-string-ta)o(bl)o(e\))35 b Fn(!)42
b Fq(string-table)p Black 755 1362 a Fn(\017)p Black
42 w Fo(\(make-integer-t)o(ab)o(le\))35 b Fn(!)41 b Fq(inte)l
(ger-table)p Black 755 1462 a Fn(\017)p Black 42 w Fo(\(make-table-mak)
o(er)35 b Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)43 b(hash-pr)l(o)l(c)5
b Fo(\))42 b Fn(!)f Fq(pr)l(o)l(c)l(e)l(dur)l(e)p Black
755 1562 a Fn(\017)p Black 42 w Fo(\(make-table-imm)o(ut)o(abl)o(e!)35
b Fq(table)6 b Fo(\))739 1717 y Fr(The)37 b(\014rst)f(four)h(functions)
g(listed)g(mak)n(e)f(v)-5 b(arious)36 b(kinds)h(of)g(tables.)64
b Fo(Make-table)33 b Fr(re-)739 1817 y(turns)28 b(a)g(table)h(whose)f
(k)n(eys)f(ma)n(y)h(b)r(e)h(sym)n(b)r(ols,)f(in)n(teger,)g(c)n
(haracters,)e(b)r(o)r(oleans,)i(or)g(the)739 1916 y(empt)n(y)e(list)g
(\(these)g(are)f(also)g(the)h(v)-5 b(alues)26 b(that)g(ma)n(y)f(b)r(e)i
(used)f(in)g Fo(case)e Fr(expressions\).)35 b(As)739
2016 y(with)27 b Fo(case)p Fr(,)e(comparison)g(is)i(done)f(using)h
Fo(eqv?)p Fr(.)35 b(The)27 b(comparison)e(pro)r(cedures)g(used)i(in)739
2116 y(sym)n(b)r(ol,)g(string,)g(and)g(in)n(teger)g(tables)g(are)g
Fo(eq?)p Fr(,)g Fo(string=?)p Fr(,)d(and)j Fo(=)p Fr(.)863
2217 y Fo(Make-table-maker)16 b Fr(tak)n(es)21 b(t)n(w)n(o)g(pro)r
(cedures)g(as)g(argumen)n(ts)g(and)g(returns)h(a)f(n)n(ullary)739
2317 y(table-making)d(pro)r(cedure.)33 b Fq(Comp)l(ar)l(e-pr)l(o)l(c)25
b Fr(should)18 b(b)r(e)i(a)e(t)n(w)n(o-argumen)n(t)f(equalit)n(y)h
(pred-)739 2417 y(icate.)67 b Fq(Hash-pr)l(o)l(c)43 b
Fr(should)37 b(b)r(e)i(a)e(one)g(argumen)n(t)g(pro)r(cedure)f(that)i
(tak)n(es)f(a)g(k)n(ey)g(and)739 2516 y(returns)24 b(a)h(non-negativ)n
(e)f(in)n(teger)g(hash)h(v)-5 b(alue.)36 b(If)c Fo(\()p
Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)49 b(x)k(y)7 b Fo(\))26
b Fr(returns)e(true,)739 2616 y(then)37 b Fo(\(=)42 b(\()p
Fq(hash-pr)l(o)l(c)50 b(x)10 b Fo(\))42 b(\()p Fq(hash-pr)l(o)l(c)50
b(y)7 b Fo(\)\))36 b Fr(m)n(ust)g(also)f(return)h(true.)63
b(F)-7 b(or)36 b(example,)739 2715 y Fo(make-integer-tab)o(le)21
b Fr(could)28 b(b)r(e)g(de\014ned)f(as)g Fo(\(make-table-maker)37
b(=)43 b(abs\))p Fr(.)863 2817 y Fo(Make-table-immuta)o(ble)o(!)31
b Fr(prohibits)c(future)h(mo)r(di\014cation)f(to)h(its)f(argumen)n(t.)p
Black 755 2973 a Fn(\017)p Black 42 w Fo(\(table?)47
b Fq(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 755 3072 a Fn(\017)p Black 42 w Fo(\(table-ref)c
Fq(table)42 b(key)7 b Fo(\))42 b Fn(!)g Fq(value)g(or)g
Fo(#f)p Black 755 3172 a Fn(\017)p Black 42 w Fo(\(table-set!)36
b Fq(table)43 b(key)f(value)6 b Fo(\))p Black 755 3272
a Fn(\017)p Black 42 w Fo(\(table-walk)36 b Fq(pr)l(o)l(c)l(e)l(dur)l
(e)42 b(table)6 b Fo(\))p Black 755 3371 a Fn(\017)p
Black 42 w Fo(\(table->entry-l)o(is)o(t)36 b Fq(table)6
b Fo(\))42 b Fn(!)f Fq(list)h(of)g(p)l(airs)739 3527
y Fo(Table?)62 b Fr(is)36 b(the)i(predicate)e(for)g(tables.)64
b Fo(Table-ref)33 b Fr(and)k Fo(table-set!)60 b Fr(access)35
b(and)739 3626 y(mo)r(dify)g(the)g(v)-5 b(alue)35 b(of)41
b Fq(key)i Fr(in)35 b Fq(table)6 b Fr(.)60 b Fo(Table-walk)31
b Fr(applies)j Fq(pr)l(o)l(c)l(e)l(dur)l(e)6 b Fr(,)37
b(whic)n(h)e(m)n(ust)739 3726 y(accept)42 b(t)n(w)n(o)f(argumen)n(ts,)k
(to)d(ev)n(ery)g(asso)r(ciated)f(k)n(ey)g(and)h(non-)p
Fo(#f)f Fr(v)-5 b(alue)43 b(in)f Fo(table)p Fr(.)739
3826 y Fo(Table->entry-lis)o(t)22 b Fr(returns)k(a)i(list)f(with)i(the)
f(v)-5 b(alues)27 b(of)g(the)h(table.)p Black 755 3981
a Fn(\017)p Black 42 w Fo(\(default-hash-f)o(un)o(cti)o(on)35
b Fq(value)6 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p Black
755 4081 a Fn(\017)p Black 42 w Fo(\(string-hash)36 b
Fq(string)7 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)p Black
755 4180 a Fn(\017)p Black 42 w Fo(\(symbol-hash)36 b
Fq(symb)l(ol)9 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)739
4336 y Fo(Default-hash-fun)o(ct)o(ion)29 b Fr(is)36 b(the)g(hash)f
(function)h(used)g(in)g(the)g(tables)f(returned)h(b)n(y)739
4436 y Fo(make-table)p Fr(,)16 b Fo(string-hash)e Fr(is)k(the)h(one)f
(used)g(b)n(y)i Fo(make-string-tab)o(le)p Fr(,)14 b(and)k
Fo(symbol-hash)739 4535 y Fr(is)27 b(the)h(one)g(used)f(b)n(y)i
Fo(make-symbol-tab)o(le)p Fr(.)739 4821 y Fj(5.13)135
b(P)l(ort)46 b(extensions)739 5006 y Fr(These)27 b(pro)r(cedures)g(are)
f(in)i(structure)f Fo(extended-ports)p Fr(.)p Black 2130
5255 a(50)p Black eop end
%%Page: 51 59
TeXDict begin 51 58 bop 0 TeXcolorgray Black Black Black
Black 307 523 a Fn(\017)p Black 41 w Fo(\(make-string-inpu)o(t-)o(por)o
(t)35 b Fq(string)7 b Fo(\))42 b Fn(!)f Fq(input-p)l(ort)p
Black 307 623 a Fn(\017)p Black 41 w Fo(\(make-string-outp)o(ut)o(-po)o
(rt)o(\))35 b Fn(!)42 b Fq(output-p)l(ort)p Black 307
722 a Fn(\017)p Black 41 w Fo(\(string-output-po)o(rt)o(-ou)o(tp)o(ut)
35 b Fq(string-output-p)l(ort)8 b Fo(\))40 b Fn(!)h Fq(string)291
865 y Fo(Make-string-inp)o(ut-)o(po)o(rt)13 b Fr(returns)20
b(an)f(input)i(p)r(ort)f(that)g(that)g(reads)f(c)n(haracters)e(from)291
965 y(the)39 b(supplied)h(string.)72 b(An)40 b(end-of-\014le)f(ob)5
b(ject)40 b(is)f(returned)g(if)h(the)g(user)f(reads)f(past)291
1065 y(the)29 b(end)h(of)f(the)g(string.)42 b Fo(Make-string-out)o(put)
o(-p)o(or)o(t)23 b Fr(returns)29 b(an)g(output)h(p)r(ort)f(that)291
1164 y(sa)n(v)n(es)39 b(the)j(c)n(haracters)d(written)j(to)f(it.)79
b(These)41 b(are)g(then)h(returned)f(as)f(a)h(string)g(b)n(y)291
1264 y Fo(string-output-p)o(ort)o(-o)o(ut)o(put)o Fr(.)p
Black Black 291 1438 a Fo(\(read)g(\(make-string-inp)o(ut-)o(po)o(rt)c
("\(a)43 b(b\)"\)\))465 1538 y Fn(!)h Fo('\(a)e(b\))291
1737 y(\(let)g(\(\(p)g(\(make-string-out)o(pu)o(t-p)o(or)o(t\)\))o(\))
378 1837 y(\(write)f('\(a)h(b\))h(p\))378 1937 y(\(let)f(\(\(s)g
(\(string-output-p)o(ort)o(-o)o(utp)o(ut)37 b(p\)\)\))465
2036 y(\(display)j("c")j(p\))465 2136 y(\(list)e(s)j(\(string-output-)o
(por)o(t-)o(out)o(pu)o(t)37 b(p\)\)\)\))465 2235 y Fn(!)44
b Fo('\("\(a)d(b\)")h("\(a)h(b\)c"\))p Black 307 2410
a Fn(\017)p Black 41 w Fo(\(limit-output)36 b Fq(output-p)l(ort)41
b(n)g(pr)l(o)l(c)l(e)l(dur)l(e)6 b Fo(\))291 2553 y Fq(Pr)l(o)l(c)l(e)l
(dur)l(e)32 b Fr(is)26 b(called)g(on)g(an)f(output)i(p)r(ort.)36
b(Output)27 b(written)f(to)g(that)g(p)r(ort)g(is)g(copied)g(to)291
2653 y Fq(output-p)l(ort)32 b Fr(un)n(til)25 b Fq(n)31
b Fr(c)n(haracters)23 b(ha)n(v)n(e)h(b)r(een)h(written,)h(at)f(whic)n
(h)g(p)r(oin)n(t)g Fo(limit-output)291 2752 y Fr(returns.)52
b(If)33 b Fq(pr)l(o)l(c)l(e)l(dur)l(e)39 b Fr(returns)32
b(b)r(efore)h(writing)f Fq(n)39 b Fr(c)n(haracters,)32
b(then)i Fo(limit-output)291 2852 y Fr(also)24 b(returns)g(at)h(that)g
(time,)i(regardless)22 b(of)j(ho)n(w)g(man)n(y)f(c)n(haracters)f(ha)n
(v)n(e)h(b)r(een)i(written.)p Black 307 2995 a Fn(\017)p
Black 41 w Fo(\(make-tracking-in)o(pu)o(t-p)o(or)o(t)35
b Fq(input-p)l(ort)8 b Fo(\))41 b Fn(!)g Fq(input-p)l(ort)p
Black 307 3095 a Fn(\017)p Black 41 w Fo(\(make-tracking-ou)o(tp)o(ut-)
o(po)o(rt)35 b Fq(output-p)l(ort)8 b Fo(\))40 b Fn(!)i
Fq(output-p)l(ort)p Black 307 3194 a Fn(\017)p Black
41 w Fo(\(current-row)37 b Fq(p)l(ort)8 b Fo(\))41 b
Fn(!)g Fq(inte)l(ger)h(or)g Fo(#f)p Black 307 3294 a
Fn(\017)p Black 41 w Fo(\(current-column)36 b Fq(p)l(ort)8
b Fo(\))41 b Fn(!)g Fq(inte)l(ger)h(or)g Fo(#f)p Black
307 3393 a Fn(\017)p Black 41 w Fo(\(fresh-line)37 b
Fq(output-p)l(ort)8 b Fo(\))291 3536 y(Make-tracking-i)o(npu)o(t-)o(po)
o(rt)k Fr(and)18 b Fo(make-tracking-out)o(pu)o(t-p)o(or)o(t)12
b Fr(return)18 b(p)r(orts)g(that)291 3636 y(k)n(eep)j(trac)n(k)g(of)g
(the)i(curren)n(t)e(ro)n(w)f(and)i(column)g(and)f(are)g(otherwise)g
(iden)n(tical)h(to)f(their)h(ar-)291 3736 y(gumen)n(ts.)33
b(Closing)17 b(a)h(trac)n(king)f(p)r(ort)h(do)r(es)h(not)f(close)f(the)
i(underlying)f(p)r(ort.)34 b Fo(Current-row)291 3835
y Fr(and)27 b Fo(current-column)22 b Fr(return)27 b Fq(p)l(ort)8
b Fr('s)27 b(curren)n(t)g(read)g(or)f(write)i(lo)r(cation.)36
b(They)27 b(return)291 3935 y Fo(#f)36 b Fr(if)i Fq(p)l(ort)46
b Fr(do)r(es)37 b(not)h(k)n(eep)f(trac)n(k)f(of)i(its)g(lo)r(cation.)66
b Fo(Fresh-line)33 b Fr(writes)38 b(a)f(newline)291 4035
y(c)n(haracter)25 b(to)j Fq(output-p)l(ort)34 b Fr(if)h
Fo(\(current-row)j Fq(p)l(ort)8 b Fo(\))28 b Fr(is)f(not)h(0.)p
Black Black 291 4209 a Fo(\(define)40 b(p)j(\(make-tracking-ou)o(tpu)o
(t-)o(por)o(t)37 b(\(open-output-file)g("/tmp/temp"\)\)\))291
4309 y(\(list)k(\(current-row)e(p\))j(\(current-column)c(p\)\))465
4408 y Fn(!)44 b Fo('\(0)e(0\))291 4508 y(\(display)e("012")h(p\))291
4608 y(\(list)g(\(current-row)e(p\))j(\(current-column)c(p\)\))465
4707 y Fn(!)44 b Fo('\(0)e(3\))291 4807 y(\(fresh-line)d(p\))291
4907 y(\(list)i(\(current-row)e(p\))j(\(current-column)c(p\)\))465
5006 y Fn(!)44 b Fo('\(1)e(0\))p Black 1681 5255 a Fr(51)p
Black eop end
%%Page: 52 60
TeXDict begin 52 59 bop 0 TeXcolorgray Black Black Black
739 523 a Fo(\(fresh-line)39 b(p\))739 623 y(\(list)i(\(current-row)e
(p\))k(\(current-column)37 b(p\)\))913 722 y Fn(!)44
b Fo('\(1)e(0\))739 996 y Fj(5.14)135 b(Fluid)45 b(bindings)739
1178 y Fr(These)29 b(pro)r(cedures)g(implemen)n(t)h(dynamic)g(binding)g
(and)g(are)e(in)i(structure)g Fo(fluids)p Fr(.)41 b(A)739
1277 y Fq(\015uid)34 b Fr(is)26 b(a)f(cell)h(whose)e(v)-5
b(alue)26 b(can)f(b)r(e)h(b)r(ound)g(dynamically)-7 b(.)36
b(Eac)n(h)24 b(\015uid)i(has)f(a)g(top-lev)n(el)739 1377
y(v)-5 b(alue)18 b(that)h(is)g(used)f(when)h(the)g(\015uid)g(is)f(un)n
(b)r(ound)h(in)g(the)g(curren)n(t)f(dynamic)g(en)n(vironmen)n(t.)p
Black 755 1521 a Fn(\017)p Black 42 w Fo(\(make-fluid)36
b Fq(value)6 b Fo(\))42 b Fn(!)g Fq(\015uid)p Black 755
1621 a Fn(\017)p Black 42 w Fo(\(fluid)d Fq(\015uid)9
b Fo(\))40 b Fn(!)i Fq(value)p Black 755 1720 a Fn(\017)p
Black 42 w Fo(\(let-fluid)37 b Fq(\015uid)42 b(value)g(thunk)9
b Fo(\))40 b Fn(!)i Fq(value\(s\))p Black 755 1820 a
Fn(\017)p Black 42 w Fo(\(let-fluids)36 b Fq(\015uid)1520
1832 y Fk(0)1599 1820 y Fq(value)1783 1832 y Fk(0)1863
1820 y Fq(\015uid)2024 1832 y Fk(1)2103 1820 y Fq(value)2287
1832 y Fk(1)2366 1820 y Fq(.)13 b(.)g(.)g(thunk)c Fo(\))41
b Fn(!)h Fq(value\(s\))739 1964 y Fo(Make-fluid)25 b
Fr(returns)j(a)g(new)h(\015uid)h(with)f Fq(value)36 b
Fr(as)28 b(its)h(initial)h(top-lev)n(el)e(v)-5 b(alue.)40
b Fo(Fluid)739 2064 y Fr(returns)f Fo(fluid)p Fr('s)f(curren)n(t)h(v)-5
b(alue.)73 b Fo(Let-fluid)37 b Fr(calls)i Fo(thunk)p
Fr(,)i(with)f Fq(\015uid)49 b Fr(b)r(ound)40 b(to)739
2163 y Fq(value)45 b Fr(un)n(til)38 b Fo(thunk)d Fr(returns.)67
b(Using)38 b(a)f(con)n(tin)n(uation)g(to)g(thro)n(w)g(out)h(of)g(the)g
(call)f(to)739 2263 y Fo(thunk)25 b Fr(causes)g Fq(\015uid)36
b Fr(to)26 b(rev)n(ert)f(to)i(its)g(original)e(v)-5 b(alue,)26
b(while)h(thro)n(wing)f(bac)n(k)f(in)i(causes)739 2363
y Fq(\015uid)j Fr(to)21 b(b)r(e)h(reb)r(ound)f(to)g Fq(value)6
b Fr(.)36 b Fo(Let-fluid)17 b Fr(returns)k(the)g(v)-5
b(alue\(s\))22 b(returned)f(b)n(y)h Fq(thunk)9 b Fr(.)739
2462 y Fo(Let-fluids)21 b Fr(is)k(iden)n(tical)g(to)g
Fo(let-fluid)c Fr(except)k(that)h(it)f(binds)h(an)e(arbitrary)f(n)n(um)
n(b)r(er)739 2562 y(of)k(\015uids)h(to)g(new)f(v)-5 b(alues.)p
Black Black 739 2738 a Fo(\(let*)41 b(\(\(f)i(\(make-fluid)c('a\)\))
1044 2838 y(\(v0)j(\(fluid)f(f\)\))1044 2937 y(\(v1)h(\(let-fluid)e(f)j
('b)1306 3037 y(\(lambda)d(\(\))1393 3136 y(\(fluid)h(f\)\)\)\))1044
3236 y(\(v2)h(\(fluid)f(f\)\)\))826 3336 y(\(list)h(v0)g(v1)h(v2\)\))
826 3435 y Fn(!)h Fo('\(a)e(b)h(a\))p Black Black 739
3611 a(\(let)f(\(\(f)g(\(make-fluid)d('a\)\))1000 3711
y(\(path)j('\(\)\))1000 3811 y(\(c)h(#f\)\))826 3910
y(\(let)f(\(\(add)g(\(lambda)e(\(\))1393 4010 y(\(set!)h(path)h(\(cons)
g(\(fluid)f(f\))i(path\)\)\)\)\))913 4110 y(\(add\))913
4209 y(\(let-fluid)d(f)j('b)1000 4309 y(\(lambda)e(\(\))1088
4408 y(\(call-with-curr)o(ent)o(-c)o(on)o(tin)o(ua)o(tio)o(n)1175
4508 y(\(lambda)f(\(c0\))1262 4608 y(\(set!)h(c)j(c0\)\)\))1088
4707 y(\(add\)\)\))913 4807 y(\(add\))913 4907 y(\(if)f(\(<)f(\(length)
f(path\))h(5\))1088 5006 y(\(c\))p Black 2130 5255 a
Fr(52)p Black eop end
%%Page: 53 61
TeXDict begin 53 60 bop 0 TeXcolorgray Black Black Black
639 523 a Fo(\(reverse)41 b(path\)\)\)\))378 623 y Fn(!)i
Fo('\(a)g(b)g(a)g(b)g(a\))291 907 y Fj(5.15)135 b(OS)45
b(strings)291 1093 y Fr(On)26 b(common)g(op)r(erating)g(systems)g(suc)n
(h)g(as)g(Unix)h(and)g(Windo)n(ws,)f(v)-5 b(arious)26
b(parameters)291 1192 y(to)j(OS)g(functionalit)n(y|suc)n(h)g(as)g
(\014le)h(names,)f(user)g(names,)g(command-line)g(argumen)n(ts)291
1292 y(etc.|app)r(ear)e(as)g(text)h(in)g(most)f(con)n(texts,)g(but)i
(are)d(really)h(b)n(yte)h(sequences:)36 b(On)28 b(Unix,)291
1391 y(the)j(b)n(yte)g(sequence)g(ma)n(y)g(b)r(e)g(in)n(terpreted)g(as)
g(text)h(through)e(some)h(lo)r(cale-determined)291 1491
y(enco)r(ding.)k(On)24 b(Windo)n(ws,)h(suc)n(h)f(parameters)f(are)h(t)n
(ypically)g(represen)n(ted)f(as)h(sequences)291 1591
y(of)i(UTF-16)f(co)r(de)i(units.)36 b(In)27 b(b)r(oth)g(cases,)e(not)i
(ev)n(ery)e(suc)n(h)h(b)n(yte)g(sequence)g(has)g(a)g(string)291
1690 y(equiv)-5 b(alen)n(t:)38 b(On)28 b(Unix,)h(a)f(b)n(yte)h
(sequence)f(enco)r(ding)g(a)g(\014le)h(name)f(using)g(Latin-1)g(often)
291 1790 y(cannot)34 b(b)r(e)h(deco)r(ded)g(using)g(UTF-8.)59
b(On)34 b(Windo)n(ws,)j(unpaired)d(UTF-16)g(surrogates)291
1890 y(are)26 b(admissible)h(in)h(enco)r(dings,)f(and)h(no)f(lossless)f
(text)i(deco)r(ding)f(for)g(them)i(exists.)415 1991 y(F)-7
b(or)26 b(represen)n(ting)e(suc)n(h)i(string-lik)n(e)f(parameters,)f
(Sc)n(heme)i(48)g(uses)f(an)h(abstraction)291 2091 y(called)39
b Fq(OS)h(strings)p Fr(.)73 b(An)40 b(OS)f(string)g(is)h(created)f
(from)g(either)h(a)f(string)g(or)g(a)g(NUL-)291 2190
y(terminated)33 b(b)n(yte)h(sequence)f(stored)f(in)i(a)f(b)n(yte)h(v)n
(ector,)g(and)f(has)g(an)g(asso)r(ciated)g(text)291 2290
y(co)r(dec)28 b(\(see)i(section)p 0 0 1 TeXcolorrgb 28
w(6.6.1)p Black(\))e(that)i(is)f(able)g(to)g(con)n(v)n(ert)e(from)i
(one)g(represen)n(tation)e(to)j(the)291 2390 y(other.)65
b(The)37 b(exact)g(meaning)f(of)h(a)g(NUL-terminated)g(b)n(yte)g
(sequence)g(is)g(dep)r(enden)n(t)291 2489 y(on)28 b(this)h(text)g(co)r
(dec.)40 b(Ho)n(w)n(ev)n(er,)27 b(only)h(co)r(decs)g(for)h(enco)r
(dings)f(that)h(are)e(a)i(conserv)-5 b(ativ)n(e)291 2589
y(extension)33 b(of)h(ASCI)r(I)h(\(suc)n(h)f(as)f(ASCI)r(I)i(itself,)h
(Latin-1,)f(or)e(UTF-8\))h(should)g(b)r(e)g(used)291
2688 y(here,)28 b(to)g(allo)n(w)g(a)g(minimal)h(set)f(of)h(p)r(ortable)
f(\014le)g(names.)40 b(\(The)29 b(Windo)n(ws)f(p)r(ort)g(uses)g(a)291
2788 y(sp)r(ecial)18 b(syn)n(thetic)h(enco)r(ding)f(called)h(UTF-8of16)
e(compatible)i(with)g(UTF-8)f(but)i(capable)291 2888
y(of)33 b(enco)r(ding)g(ev)n(en)g(in)n(v)-5 b(alid)33
b(UTF-16)f(in)n(ternally)-7 b(,)35 b(but)f(uses)f(the)g(UTF-8)g(co)r
(dec)g(at)h(the)291 2987 y(Sc)n(heme)27 b(lev)n(el.\))415
3089 y(Most)35 b(pro)r(cedures)f(accepting)h(OS)g(strings)g(also)f
(accept)h(strings)g(or)f(b)n(yte)h(v)n(ectors,)291 3188
y(whic)n(h)20 b(are)f(then)i(used)g(to)f(construct)g(a)g(OS)g(string.)
34 b(In)20 b(the)h(headers)e(of)i(the)g(sp)r(eci\014cations)291
3288 y(of)38 b(these)g(pro)r(cedures,)h(suc)n(h)f(argumen)n(ts)f(o)r
(ccur)g(as)h Fq(os-string-thing)7 b Fr(.)69 b(The)38
b(standard)291 3388 y(Sc)n(heme)d(pro)r(cedures)g(suc)n(h)h(as)f
Fo(open-input-file)30 b Fr(that)36 b(tak)n(e)g(\014le)g(names)f(all)h
(accept)291 3487 y Fq(os-string-thing)f Fr(argumen)n(ts.)g(OS)28
b(strings)e(are)h(in)h(the)g Fo(os-strings)23 b Fr(structure.)p
Black 307 3642 a Fn(\017)p Black 41 w Fo(\(os-string?)46
b Fq(value)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 307 3742 a Fn(\017)p Black 41 w Fo(\(make-os-string)36
b Fq(text-c)l(o)l(de)l(c)k(string/byte-ve)l(ctor)9 b
Fo(\))42 b Fn(!)f Fq(os-string)291 3897 y Fr(The)30 b
Fo(os-string?)40 b Fr(predicate)29 b(returns)g Fo(#t)h
Fr(if)g(its)h(argumen)n(t)d(is)i(an)g(OS)g(string,)g
Fo(#f)f Fr(oth-)291 3997 y(erwise.)415 4098 y(The)d Fo(make-os-string)
20 b Fr(pro)r(cedure)k(creates)h(an)g(OS)g(string)g(from)h(a)f(text)h
(co)r(dec)f(and)291 4198 y(a)c(b)n(yte)h(v)n(ector)e(or)h(string)g
(that)h(de\014nes)g(its)f(con)n(ten)n(ts.)35 b(If)22
b(the)g(argumen)n(t)f(is)g(a)h(b)n(yte)f(v)n(ector,)291
4298 y(it)28 b(do)r(es)f(not)g(matter)h(if)g(it)g(is)f(NUL-terminated)h
(or)f(not.)p Black 307 4453 a Fn(\017)p Black 41 w Fo
(\(string->os-strin)o(g)35 b Fq(string)7 b Fo(\))42 b
Fn(!)f Fq(os-string)p Black 307 4552 a Fn(\017)p Black
41 w Fo(\(byte-vector->os-)o(st)o(rin)o(g)35 b Fq(byte-ve)l(ctor)9
b Fo(\))42 b Fn(!)f Fq(os-string)p Black 307 4652 a Fn(\017)p
Black 41 w Fo(\(x->os-string)36 b Fq(os-string-thing)7
b Fo(\))42 b Fn(!)f Fq(os-string)291 4807 y Fr(These)30
b(pro)r(cedures)f(create)h(an)g(OS)h(string)f(from)g(a)g(string,)h(a)f
(b)n(yte-v)n(ector)f(\(whose)h(last)291 4907 y(v)-5 b(alue)27
b(should)f(b)r(e)i(0\),)f(and)g(an)g Fq(os-string-thing)34
b Fr(argumen)n(t,)27 b(resp)r(ectiv)n(ely)-7 b(,)26 b(alw)n(a)n(ys)f
(using)291 5006 y(the)j(standard)e(OS-string)g(text)i(co)r(dec)g(\(see)
f(b)r(elo)n(w\).)p Black 1681 5255 a(53)p Black eop end
%%Page: 54 62
TeXDict begin 54 61 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(os-string->byt)o(e-)o(vec)o
(to)o(r)36 b Fq(os-string)7 b Fo(\))41 b Fn(!)g Fq(byte-ve)l(ctor)p
Black 755 623 a Fn(\017)p Black 42 w Fo(\(os-string->str)o(in)o(g)36
b Fq(os-string)7 b Fo(\))41 b Fn(!)h Fq(string)739 786
y Fr(These)28 b(pro)r(cedures)g(yield)g(the)h(con)n(ten)n(ts)f(of)h(an)
f(OS)h(string.)39 b(F)-7 b(or)28 b(an)h(OS)f(string)g(created)739
886 y(from)e(a)h(string,)f Fo(os-string->string)20 b
Fr(will)27 b(return)f(a)h(string)f(with)h(the)h(same)e(con)n(ten)n(ts;)
739 985 y(for)39 b(an)f(OS)h(string)g(created)f(from)h(a)g(b)n(yte)g(v)
n(ector,)i Fo(os-string->byte-)o(ve)o(cto)o(r)33 b Fr(will)739
1085 y(return)d(a)g(b)n(yte)g(v)n(ector)f(with)i(the)g(same)f(con)n
(ten)n(ts.)44 b(F)-7 b(or)30 b(the)h(other)e(cases,)h(data)g(loss)g(as)
739 1184 y(determined)e(b)n(y)f(the)h(text)g(co)r(dec)f(is)h(p)r
(ossible.)p Black 755 1348 a Fn(\017)p Black 42 w Fo(\(os-string-text)o
(-c)o(ode)o(c)35 b Fq(os-string)7 b Fo(\))42 b Fn(!)f
Fq(text-c)l(o)l(de)l(c)739 1511 y Fr(This)27 b(pro)r(cedure)g(returns)g
(the)h(text)g(co)r(dec)f(of)h(the)g(OS)f(string.)p Black
755 1674 a Fn(\017)p Black 42 w Fo(\(os-string=?)45 b
Fq(os-string)c(os-string)7 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)739
1837 y Fr(This)30 b(pro)r(cedure)g(returns)f Fo(#t)h
Fr(if)h(its)f(argumen)n(ts)f(denote)i(the)f(same)g(b)n(yte)g(sequence,)
h Fo(#f)739 1937 y Fr(otherwise.)p Black 755 2100 a Fn(\017)p
Black 42 w Fo(\(x->os-byte-vec)o(to)o(r)36 b Fq(os-string-thing)7
b Fo(\))41 b Fn(!)h Fq(byte-ve)l(ctor)p Black 755 2200
a Fn(\017)p Black 42 w Fo(\(string->os-byt)o(e-)o(vec)o(to)o(r)36
b Fq(string)7 b Fo(\))41 b Fn(!)g Fq(byte-ve)l(ctor)739
2363 y Fr(These)19 b(are)g(con)n(v)n(enience)f(pro)r(cedures:)32
b(The)19 b(\014rst)h(is)f(the)h(comp)r(osition)f(of)26
b Fo(x->os-string)739 2463 y Fr(and)18 b Fo(os-string->byte-)o(vec)o
(to)o(r)p Fr(,)c(and)19 b(the)f(second)g(is)g(the)h(comp)r(osition)f
(of)25 b Fo(string->os-stri)o(ng)739 2562 y Fr(and)i
Fo(os-string->byte-v)o(ec)o(tor)o Fr(.)p Black 755 2726
a Fn(\017)p Black 42 w Fo(\(current-os-str)o(in)o(g-t)o(ex)o(t-c)o(od)o
(ec\))35 b Fn(!)41 b Fq(text-c)l(o)l(de)l(c)p Black 755
2825 a Fn(\017)p Black 42 w Fo(\(call-with-os-s)o(tr)o(ing)o(-t)o(ext)o
(-c)o(ode)o(c)35 b Fq(text-c)l(o)l(de)l(c)41 b(thunk)9
b Fo(\))40 b Fn(!)84 b Fq(value\(s\))739 2988 y Fr(The)32
b Fo(current-os-string)o(-t)o(ex)o(t-c)o(od)o(ec)26 b
Fr(returns)31 b(the)i(curren)n(t)e(text)i(co)r(dec)f(used)g(for)739
3088 y(creating)k(new)i(OS)f(strings.)65 b(The)37 b(initial)h(default)g
(is)f(determined)g(b)n(y)h(the)f(op)r(erating)739 3188
y(system.)d(\(On)21 b(Unix,)h(this)f(is)f(the)h(text)g(co)r(dec)f
(determined)h(b)n(y)f(the)h(lo)r(cale.)34 b(On)21 b(Windo)n(ws,)739
3287 y(this)e(is)f(UTF-8.\))34 b(The)18 b Fo(call-with-os-stri)o(ng-)o
(te)o(xt)o(-co)o(de)o(c)13 b Fr(pro)r(cedure)k(dynamically)739
3387 y(binds)28 b(the)g(curren)n(t)e(text)i(co)r(dec)g(to)f
Fq(text-c)l(o)l(de)l(c)32 b Fr(during)27 b(the)h(in)n(v)n(o)r(cation)e
(of)i Fq(thunk)8 b Fr(.)739 3686 y Fj(5.16)135 b(Shell)46
b(commands)739 3876 y Fr(Structure)27 b Fo(c-system-function)21
b Fr(pro)n(vides)26 b(access)h(to)g(the)h(C)g Fo(system\(\))c
Fr(function.)p Black 755 4040 a Fn(\017)p Black 42 w
Fo(\(have-system?\))44 b Fn(!)e Fq(b)l(o)l(ole)l(an)p
Black 755 4139 a Fn(\017)p Black 42 w Fo(\(system)c Fq(os-string-thing)
7 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)739 4302 y Fo(Have-system?)30
b Fr(returns)23 b(true)h(if)g(the)g(underlying)e(C)i(implemen)n(tation)
g(has)f(a)g(command)739 4402 y(pro)r(cessor.)47 b Fo(\(System)41
b Fq(string)7 b Fo(\))31 b Fr(passes)g Fq(string)39 b
Fr(to)32 b(the)g(C)g Fo(system\(\))c Fr(function)k(and)g(re-)739
4502 y(turns)27 b(the)h(result.)p Black Black 739 4707
a Fo(\(begin)826 4807 y(\(system)41 b("echo)g(foo)i(>)g(test-file"\))
826 4907 y(\(call-with-input)o(-fi)o(le)37 b("test-file")i(read\)\))739
5006 y Fn(!)44 b Fo('foo)p Black 2130 5255 a Fr(54)p
Black eop end
%%Page: 55 63
TeXDict begin 55 62 bop 0 TeXcolorgray Black Black Black
291 523 a Fj(5.17)135 b(So)t(c)l(k)l(ets)291 705 y Fr(Structure)25
b Fo(sockets)e Fr(pro)n(vides)i(access)g(to)g(TCP/IP)g(so)r(c)n(k)n
(ets)f(for)i(in)n(terpro)r(cess)e(and)i(net-)291 805
y(w)n(ork)g(comm)n(unication.)p Black 307 944 a Fn(\017)p
Black 41 w Fo(\(open-socket\))36 b Fn(!)42 b Fq(so)l(cket)p
Black 307 1044 a Fn(\017)p Black 41 w Fo(\(open-socket)37
b Fq(p)l(ort-numb)l(er)9 b Fo(\))40 b Fn(!)h Fq(so)l(cket)p
Black 307 1143 a Fn(\017)p Black 41 w Fo(\(socket-port-numb)o(er)35
b Fq(so)l(cket)8 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)p
Black 307 1243 a Fn(\017)p Black 41 w Fo(\(close-socket)36
b Fq(so)l(cket)8 b Fo(\))p Black 307 1343 a Fn(\017)p
Black 41 w Fo(\(socket-accept)36 b Fq(so)l(cket)8 b Fo(\))41
b Fn(!)h Fq(input-p)l(ort)f(output-p)l(ort)p Black 307
1442 a Fn(\017)p Black 41 w Fo(\(get-host-name\))36 b
Fn(!)41 b Fq(string)291 1582 y Fo(Open-socket)29 b Fr(creates)k(a)g
(new)h(so)r(c)n(k)n(et.)55 b(If)34 b(no)g Fq(p)l(ort-numb)l(er)42
b Fr(is)34 b(supplied)g(the)g(system)291 1682 y(pic)n(ks)j(one)g(at)h
(random.)66 b Fo(Socket-port-numbe)o(r)32 b Fr(returns)37
b(a)g(so)r(c)n(k)n(et's)g(p)r(ort)g(n)n(um)n(b)r(er.)291
1781 y Fo(Close-socket)13 b Fr(closes)k(a)h(so)r(c)n(k)n(et,)i(prev)n
(en)n(ting)d(an)n(y)g(further)i(connections.)33 b Fo(Socket-accept)291
1881 y Fr(accepts)f(a)g(single)h(connection)f(on)h Fq(so)l(cket)8
b Fr(,)34 b(returning)e(an)h(input)g(p)r(ort)g(and)g(an)f(output)291
1980 y(p)r(ort)d(for)f(comm)n(unicating)h(with)h(the)f(clien)n(t.)42
b(If)30 b(no)f(clien)n(t)g(is)h(w)n(aiting)f Fo(socket-accept)291
2080 y Fr(blo)r(c)n(ks)c(un)n(til)i(one)f(app)r(ears.)35
b Fo(Get-host-name)21 b Fr(returns)26 b(the)g(net)n(w)n(ork)f(name)h
(of)h(the)f(ma-)291 2180 y(c)n(hine.)p Black 307 2319
a Fn(\017)p Black 41 w Fo(\(socket-client)36 b Fq(host-name)42
b(p)l(ort-numb)l(er)9 b Fo(\))40 b Fn(!)h Fq(input-p)l(ort)h(output-p)l
(ort)291 2459 y Fo(Socket-client)27 b Fr(connects)k(to)i(the)f(serv)n
(er)f(at)h Fq(p)l(ort-numb)l(er)40 b Fr(on)32 b(the)h(mac)n(hine)f
(named)291 2559 y Fq(host-name)6 b Fr(.)37 b Fo(Socket-client)22
b Fr(blo)r(c)n(ks)27 b(un)n(til)h(the)g(serv)n(er)e(accepts)h(the)h
(connection.)415 2658 y(The)22 b(follo)n(wing)f(simple)h(example)f(sho)
n(ws)g(a)h(serv)n(er)e(and)h(clien)n(t)h(for)g(a)f(cen)n(tralized)g
(UID)291 2758 y(service.)p Black Black 291 2914 a Fo(\(define)40
b(\(id-server\))378 3014 y(\(let)i(\(\(socket)e(\(open-socket\)\)\))465
3113 y(\(display)g("Waiting)g(on)j(port)f("\))465 3213
y(\(display)e(\(socket-port-numb)o(er)d(socket\)\))465
3313 y(\(newline\))465 3412 y(\(let)42 b(loop)g(\(\(next-id)e(0\)\))552
3512 y(\(call-with-value)o(s)639 3611 y(\(lambda)h(\(\))726
3711 y(\(socket-accept)d(socket\)\))639 3811 y(\(lambda)j(\(in)h(out\))
726 3910 y(\(display)f(next-id)f(out\))726 4010 y(\(close-input-port)d
(in\))726 4110 y(\(close-output-por)o(t)h(out\))726 4209
y(\(loop)k(\(+)h(next-id)d(1\)\)\)\)\)\)\))291 4408 y(\(define)g
(\(get-id)h(machine)g(port-number\))378 4508 y(\(call-with-value)o(s)
465 4608 y(\(lambda)g(\(\))552 4707 y(\(socket-client)d(machine)j
(port-number\)\))465 4807 y(\(lambda)g(\(in)h(out\))552
4907 y(\(let)g(\(\(id)g(\(read)f(in\)\)\))639 5006 y
(\(close-input-port)c(in\))p Black 1681 5255 a Fr(55)p
Black eop end
%%Page: 56 64
TeXDict begin 56 63 bop 0 TeXcolorgray Black Black Black
1088 523 a Fo(\(close-output-p)o(ort)37 b(out\))1088
623 y(id\)\)\)\))739 897 y Fj(5.18)135 b(Pro\014ling)739
1079 y Fr(The)26 b(pro\014ler)f(can)h(b)r(e)g(used)h(programmatically)c
(from)j(within)h(the)f(co)r(de)g(and)g(its)h(results)739
1178 y(can)g(b)r(e)h(pro)r(cessed)f(dynamically)-7 b(.)863
1278 y(The)44 b(structure)e Fo(profiler)e Fr(o\013ers)i(basic)h(data)g
(structures)f(and)h(functions.)84 b(All)739 1378 y(functions)45
b(need)f(a)h Fo(profile-data)39 b Fr(record)k(argumen)n(t)h(that)h(can)
f(b)r(e)h(created)f(with)739 1477 y Fo(make-empty-profi)o(le)o(-da)o
(ta)o Fr(.)p Black 755 1626 a Fn(\017)p Black 42 w Fo(\(make-empty-pro)
o(fi)o(le-)o(da)o(ta\))35 b Fn(!)41 b Fq(pr)l(o\014le-data)p
Black 755 1725 a Fn(\017)p Black 42 w Fo(\(profile-thunk)35
b Fq(pr)l(o\014le-data)43 b(thunk)e([interrupt-time)g
([with-non-instr?]])9 b Fo(\))52 b Fn(!)41 b Fq(value)863
1874 y Fo(profile-thunk)14 b Fr(executes)19 b(a)g(th)n(unk)g(under)g
(the)h(pro\014ler.)32 b(The)20 b(data)e(is)h(stored)f(in)i(the)739
1973 y Fq(pr)l(o\014le-data)36 b Fr(record)26 b(passed)i(as)f(argumen)n
(t.)38 b(Optionally)27 b(the)i(timeout)f(for)g(the)g(pro\014ler)739
2073 y(in)n(terrupt)21 b(can)g(b)r(e)h(passed)e(\(in)i(milliseconds\).)
35 b(The)21 b(return)g(v)-5 b(alue)21 b(of)28 b Fo(profile-thunk)16
b Fr(is)739 2172 y(the)21 b(return)g(v)-5 b(alue)20 b(of)28
b Fo(thunk)p Fr(.)k(By)21 b(default,)i(non-instrumen)n(ted)d(co)r(de)h
(will)g(b)r(e)g(pro\014led)g(b)n(y)739 2272 y(the)30
b(sampling)g(pro)r(cess.)43 b(By)30 b(passing)g Fo(with-non-instr?)81
b(=)43 b(#f)29 b Fr(only)h(instrumen)n(ted)739 2372 y(functions)e(will)
g(b)r(e)g(pro\014led.)863 2471 y(After)g(pro\014ling)f(data,)g(can)h(b)
r(e)g(retriev)n(ed)e(with)i(the)g(follo)n(wing)f(accessors:)p
Black 755 2620 a Fn(\017)p Black 42 w Fo(\(profile-data-s)o(ta)o(rtt)o
(im)o(e)36 b Fq(pr)l(o\014le-data)6 b Fo(\))42 b Fn(!)g
Fq(numb)l(er)p Black 755 2719 a Fn(\017)p Black 42 w
Fo(\(profile-data-e)o(nd)o(tim)o(e)35 b Fq(pr)l(o\014le-data)6
b Fo(\))43 b Fn(!)f Fq(numb)l(er)p Black 755 2819 a Fn(\017)p
Black 42 w Fo(\(profile-data-r)o(un)o(tim)o(e)35 b Fq(pr)l
(o\014le-data)6 b Fo(\))43 b Fn(!)f Fq(numb)l(er)p Black
755 2919 a Fn(\017)p Black 42 w Fo(\(profile-data-m)o(em)o(ory)o(us)o
(e)36 b Fq(pr)l(o\014le-data)6 b Fo(\))42 b Fn(!)g Fq(numb)l(er)p
Black 755 3018 a Fn(\017)p Black 42 w Fo(\(profile-data-g)o(cr)o(uns)35
b Fq(pr)l(o\014le-data)6 b Fo(\))43 b Fn(!)e Fq(numb)l(er)p
Black 755 3118 a Fn(\017)p Black 42 w Fo(\(profile-data-s)o(am)o(ple)o
(s)35 b Fq(pr)l(o\014le-data)6 b Fo(\))43 b Fn(!)f Fq(numb)l(er)p
Black 755 3217 a Fn(\017)p Black 42 w Fo(\(profile-data-i)o(nt)o(err)o
(up)o(tti)o(me)35 b Fq(pr)l(o\014le-data)6 b Fo(\))43
b Fn(!)e Fq(numb)l(er)863 3366 y Fr(Times)28 b(are)f(in)g
(milliseconds,)h(memory)e(usage)h(in)h(b)n(ytes.)863
3465 y(The)23 b(follo)n(wing)f(functions)g(pro)r(duce)h(the)f(same)g
(output)h(as)f(the)h Fo(,profile)d Fr(command)739 3565
y(\(see)40 b(section)p 0 0 1 TeXcolorrgb 39 w(3.6)p Black(\).)73
b(They)40 b(all)g(tak)n(e)f(an)h(optional)f Fq(p)l(ort)48
b Fr(argumen)n(t.)72 b(Default)41 b(is)f(the)739 3665
y Fo(current-output-p)o(or)o(t)p Fr(.)p Black 755 3813
a Fn(\017)p Black 42 w Fo(\(profile-displa)o(y)35 b Fq(pr)l
(o\014le-data)43 b([p)l(ort])9 b Fo(\))p Black 755 3913
a Fn(\017)p Black 42 w Fo(\(profile-displa)o(y-)o(ove)o(rv)o(iew)35
b Fq(pr)l(o\014le-data)42 b([p)l(ort])9 b Fo(\))p Black
755 4012 a Fn(\017)p Black 42 w Fo(\(profile-displa)o(y-)o(fla)o(t)35
b Fq(pr)l(o\014le-data)43 b([p)l(ort])9 b Fo(\))p Black
755 4112 a Fn(\017)p Black 42 w Fo(\(profile-displa)o(y-)o(tre)o(e)35
b Fq(pr)l(o\014le-data)43 b([p)l(ort])9 b Fo(\))863 4260
y(profile-display)k Fr(prin)n(ts)18 b(the)g(full)h(output)g(of)g(the)f
(pro\014ler.)33 b(The)19 b(other)e Fo(profile-display-.)o(..)739
4360 y Fr(functions)28 b(only)f(displa)n(y)g(the)h(resp)r(ectiv)n(e)f
(part)g(of)g(the)h(output.)863 4459 y(The)e(single)g(\014elds)g(in)g
(the)g(\015at)g(pro\014le)f(can)g(b)r(e)i(retriev)n(ed)d(with)j(the)f
(follo)n(wing)f(acces-)739 4559 y(sors:)p Black 755 4707
a Fn(\017)p Black 42 w Fo(\(profile-functi)o(on)o(-ca)o(ll)o(s)36
b Fq(pr)l(o\014le-data)42 b(names)7 b Fo(\))p Black 755
4807 a Fn(\017)p Black 42 w Fo(\(profile-functi)o(on)o(-re)o(cc)o(all)o
(s)35 b Fq(pr)l(o\014le-data)43 b(names)7 b Fo(\))p Black
755 4907 a Fn(\017)p Black 42 w Fo(\(profile-functi)o(on)o(-no)o(nr)o
(ecc)o(al)o(ls)35 b Fq(pr)l(o\014le-data)43 b(names)7
b Fo(\))p Black 755 5006 a Fn(\017)p Black 42 w Fo(\(profile-functi)o
(on)o(-oc)o(cu)o(rs)35 b Fq(pr)l(o\014le-data)43 b(names)7
b Fo(\))p Black 2130 5255 a Fr(56)p Black eop end
%%Page: 57 65
TeXDict begin 57 64 bop 0 TeXcolorgray Black Black Black
Black 307 523 a Fn(\017)p Black 41 w Fo(\(profile-function)o(-h)o(ist)
35 b Fq(pr)l(o\014le-data)42 b(names)7 b Fo(\))p Black
307 623 a Fn(\017)p Black 41 w Fo(\(profile-function)o(-m)o(emo)o(ry)o
(us)o(e)36 b Fq(pr)l(o\014le-data)42 b(names)7 b Fo(\))p
Black 307 722 a Fn(\017)p Black 41 w Fo(\(profile-function)o(-t)o(ime)o
(sh)o(ar)o(e)36 b Fq(pr)l(o\014le-data)42 b(names)7 b
Fo(\))p Black 307 822 a Fn(\017)p Black 41 w Fo(\(profile-function)o
(-t)o(ime)o(-c)o(um)o(ula)o(ti)o(ve)35 b Fq(pr)l(o\014le-data)43
b(names)7 b Fo(\))p Black 307 922 a Fn(\017)p Black 41
w Fo(\(profile-function)o(-t)o(ime)o(-s)o(el)o(f)36 b
Fq(pr)l(o\014le-data)42 b(names)7 b Fo(\))415 1072 y
Fr(Here)27 b Fq(names)35 b Fr(is)27 b(the)h(list)g(of)f(names)g(sp)r
(ecifying)h(the)g(function,)g(optionally)f(with)h(it's)291
1172 y(mo)r(dule.)36 b(F)-7 b(or)24 b(example,)i Fo(names)41
b(=)i(\("dynamic-wind",)37 b("wind"\))23 b Fr(w)n(ould)h(sp)r(ecify)i
(the)291 1271 y Fo(dynamic-wind)j Fr(function)35 b(in)g(the)g(mo)r
(dule)g Fo(wind)p Fr(,)g(if)g(it)g(w)n(as)e(seen)i(while)g
(pro\014ling.)56 b(If)291 1371 y(t)n(w)n(o)27 b(or)g(more)h(functions)g
(matc)n(h,)h(the)f(\014rst)g(one)g(is)g(used.)39 b(If)29
b(no)f(function)h(matc)n(hes,)f(the)291 1471 y(functions)f(return)h
Fo(#)p Fn(f)p Fo(Unspecific)p Fn(g)p Fr(.)415 1571 y(The)19
b(argumen)n(t)e Fq(names)25 b Fr(can)18 b(also)g(b)r(e)g(a)g(plain)h
(string,)g(as)f(in)h Fo(\(profile-displa)o(y-)o(fun)o(ct)o(ion)o(-f)o
(lat)291 1670 y(prof-data)39 b("module"\))p Fr(.)69 b(This)39
b(will)h(displa)n(y)f(all)g(\015at)g(function)h(pro\014les)e(that)i(ha)
n(v)n(e)291 1770 y(\\mo)r(dule")26 b(either)i(as)f(name)g(or)g(mo)r
(dule.)415 1870 y(The)h(meanings)f(of)g(the)h(\014elds)g(that)g(the)g
(functions)g(return)f(are)f(as)h(follo)n(ws:)p Black
415 2037 a Fn(\017)p Black 41 w Fo(calls)p Fr(:)34 b(total)24
b(n)n(um)n(b)r(er)h(of)g(calls)g(\(recursiv)n(e)e(and)i(non-recursiv)n
(e\))e(to)i(the)g(function)p Black 415 2204 a Fn(\017)p
Black 41 w Fo(reccalls)p Fr(:)34 b(total)27 b(n)n(um)n(b)r(er)g(of)h
(recursiv)n(e)e(calls)h(to)g(the)h(function)p Black 415
2372 a Fn(\017)p Black 41 w Fo(nonreccalls)p Fr(:)33
b(total)27 b(n)n(um)n(b)r(er)g(of)h(non-recursiv)n(e)d(calls)i(to)g
(the)h(function)p Black 415 2539 a Fn(\017)p Black 41
w Fo(occurs)p Fr(:)35 b(n)n(um)n(b)r(er)27 b(of)h(times)f(the)h
(function)h(w)n(as)d(seen)h(on)h(stac)n(k)e(while)i(pro\014ling)p
Black 415 2707 a Fn(\017)p Black 41 w Fo(hist)p Fr(:)35
b(n)n(um)n(b)r(er)28 b(of)f(times)h(the)g(function)g(w)n(as)f(seen)g
(running)h(while)f(pro\014ling)p Black 415 2874 a Fn(\017)p
Black 41 w Fo(memoryuse)p Fr(:)33 b(b)n(ytes)28 b(of)f(memory)g(used)h
(b)n(y)f(the)h(function)p Black 415 3042 a Fn(\017)p
Black 41 w Fo(timeshare)p Fr(:)38 b(p)r(ercen)n(tage)29
b(of)h(time)h(used)f(b)n(y)g(the)h(function)f(itself)h(\(n)n(um)n(b)r
(er)f(from)498 3141 y(0)d(to)h(1\))p Black 415 3309 a
Fn(\017)p Black 41 w Fo(time-cumulative)p Fr(:)j(total)c(time)h(in)g
(ms)g(the)g(function)g(w)n(as)f(on)g(call-stac)n(k)p
Black 415 3476 a Fn(\017)p Black 41 w Fo(time-self)p
Fr(:)33 b(total)28 b(time)g(in)g(ms)f(the)h(function)g(activ)n(ely)f
(running)415 3643 y(The)32 b(follo)n(wing)f(sho)n(ws)g(a)g(short)h
(example)f(of)h(the)h(usage)d(of)i(the)h(pro\014ler)e(in)n(terface,)291
3743 y(where)c Fo(main)f Fr(is)h(the)h(function)g(to)g(b)r(e)g
(pro\014led:)p Black Black 291 3910 a Fo(\(define)40
b(prof-data)g(\(make-empty-profi)o(le)o(-d)o(ata)o(\)\))291
4110 y(\(profile-thunk)d(prof-data)j(\(lambda)h(\(\))i(\(main)e
(22\)\)\))291 4209 y(\(display)f("Samples:)g("\))291
4309 y(\(display)g(\(profile-data-sa)o(mp)o(les)d(prof-data\)\))291
4408 y(\(newline\))291 4608 y(\(profile-displa)o(y-o)o(ve)o(rv)o(iew)g
(prof-data\))291 4707 y(\(profile-displa)o(y-f)o(la)o(t)g(prof-data)j
(\(current-output-p)o(or)o(t\)\))291 4807 y(\(profile-displa)o(y-t)o
(re)o(e)d(prof-data\))291 5006 y(;)43 b(print)e(only)h(function)e("a")p
Black 1681 5255 a Fr(57)p Black eop end
%%Page: 58 66
TeXDict begin 58 65 bop 0 TeXcolorgray Black Black Black
739 523 a Fo(\(profile-display)o(-f)o(unc)o(ti)o(on-)o(fl)o(at)37
b(prof-data)j('\("a"\)\))739 722 y(;)j(print)f(only)g(function)e("a")i
(in)h(file)f("x.scm")739 822 y(\(profile-display)o(-f)o(unc)o(ti)o(on-)
o(fl)o(at)37 b(prof-data)j('\("a")h("x.scm"\)\))739 1021
y(;)i(print)f(all)g(profiled)e(functions)g(in)j(file)f("x.scm")739
1121 y(\(profile-display)o(-f)o(unc)o(ti)o(on-)o(fl)o(at)37
b(prof-data)j("x.scm"\))739 1320 y(;)j(print)f(percentage)d(of)k(time)f
("a")g(was)g(running)739 1420 y(\(display)e(\(*)j(\(profile-functio)o
(n-)o(tim)o(es)o(har)o(e)37 b(prof-data)j('\("a"\)\))h(100\)\))739
1710 y Fj(5.19)135 b(Macros)45 b(for)g(writing)h(lo)t(ops)739
1898 y Fo(Iterate)29 b Fr(and)j Fo(reduce)d Fr(are)i(extensions)g(of)h
(named-)p Fo(let)f Fr(for)g(writing)h(lo)r(ops)f(that)h(w)n(alk)739
1997 y(do)n(wn)c(one)f(or)h(more)f(sequences,)h(suc)n(h)g(as)f(the)i
(elemen)n(ts)f(of)g(a)g(list)h(or)e(v)n(ector,)g(the)i(c)n(har-)739
2097 y(acters)i(read)h(from)g(a)g(p)r(ort,)h(or)e(an)h(arithmetic)h
(series.)50 b(Additional)32 b(sequences)g(can)g(b)r(e)739
2196 y(de\014ned)c(b)n(y)f(the)h(user.)36 b Fo(Iterate)25
b Fr(and)j Fo(reduce)d Fr(are)h(in)i(structure)f Fo(reduce)p
Fr(.)739 2445 y Fe(5.19.1)112 b Fb(Iterate)739 2603 y
Fr(The)28 b(syn)n(tax)e(of)34 b Fo(iterate)25 b Fr(is:)p
Black Black 826 2782 a Fo(\(iterate)40 b Fq(lo)l(op-name)1218
2881 y Fo(\(\()p Fq(se)l(quenc)l(e-typ)l(e)49 b(element-variable)j(se)l
(quenc)l(e-data)e Fo(...\))1262 2981 y(...\))1218 3080
y(\(\()p Fq(state-variable)h(initial-value)6 b Fo(\))1262
3180 y(...\))913 3280 y Fq(b)l(o)l(dy-expr)l(ession)913
3379 y Fo([)p Fq(\014nal-expr)l(ession)g Fo(]\))863 3554
y(Iterate)21 b Fr(steps)i(the)h Fq(element-variable)6
b Fr(s)25 b(in)e(parallel)f(through)h(the)h(sequences,)f(while)739
3654 y(eac)n(h)g Fq(state-variable)32 b Fr(has)23 b(the)h(corresp)r
(onding)f Fq(initial-value)32 b Fr(for)23 b(the)i(\014rst)e(iteration)g
(and)739 3754 y(ha)n(v)n(e)30 b(later)g(v)-5 b(alues)30
b(supplied)i(b)n(y)g Fq(b)l(o)l(dy-expr)l(ession)6 b
Fr(.)48 b(If)31 b(an)n(y)g(sequence)f(has)g(reac)n(hed)g(its)739
3853 y(limit)39 b(the)g(v)-5 b(alue)38 b(of)h(the)g Fo(iterate)c
Fr(expression)i(is)i(the)g(v)-5 b(alue)38 b(of)45 b Fq(\014nal-expr)l
(ession)6 b Fr(,)42 b(if)739 3953 y(presen)n(t,)24 b(or)e(the)i(curren)
n(t)f(v)-5 b(alues)23 b(of)h(the)f Fq(state-variable)6
b Fr(s,)26 b(returned)e(as)e(m)n(ultiple)j(v)-5 b(alues.)739
4052 y(If)39 b(no)f(sequence)g(has)f(reac)n(hed)h(its)g(limit,)k
Fq(b)l(o)l(dy-expr)l(ession)k Fr(is)38 b(ev)-5 b(aluated)38
b(and)g(either)739 4152 y(calls)31 b Fq(lo)l(op-name)39
b Fr(with)31 b(new)h(v)-5 b(alues)31 b(for)g(the)h Fq(state-variable)6
b Fr(s,)34 b(or)c(returns)h(some)g(other)739 4252 y(v)-5
b(alue\(s\).)863 4354 y(The)30 b Fq(lo)l(op-name)38 b
Fr(and)30 b(the)g Fq(state-variable)6 b Fr(s)31 b(and)f
Fq(initial-value)6 b Fr(s)32 b(b)r(eha)n(v)n(e)d(exactly)g(as)739
4454 y(in)f(named-)p Fo(let)p Fr(.)35 b(The)28 b(named-)p
Fo(let)e Fr(expression)p Black Black 826 4632 a Fo(\(let)42
b(loop-name)e(\(\(state-variable)d(initial-value\))h(...\))913
4732 y(body)k(...\))739 4907 y Fr(is)27 b(equiv)-5 b(alen)n(t)26
b(to)h(an)g Fo(iterate)d Fr(expression)h(with)j(no)f(sequences)f(\(and)
h(with)g(an)g(explicit)739 5006 y Fo(let)21 b Fr(wrapp)r(ed)h(around)f
(the)h(b)r(o)r(dy)h(expressions)d(to)i(tak)n(e)g(care)f(of)h(an)n(y)f
(in)n(ternal)h Fo(define)p Fr(s\):)p Black 2130 5255
a(58)p Black eop end
%%Page: 59 67
TeXDict begin 59 66 bop 0 TeXcolorgray Black Black Black
Black Black 378 523 a Fo(\(iterate)40 b(loop-name)770
623 y(\(\))770 722 y(\(\(state-variable)d(initial-value\))h(...\))465
822 y(\(let)k(\(\))h(body)f(...\)\))415 993 y Fr(The)32
b Fq(se)l(quenc)l(e-typ)l(e)6 b Fr(s)32 b(are)g(k)n(eyw)n(ords)e
(\(they)j(are)e(actually)g(macros)g(of)h(a)g(particular)291
1093 y(form;)43 b(it)38 b(is)g(easy)f(to)h(add)g(additional)f(t)n(yp)r
(es)h(of)g(sequences\).)68 b(Examples)37 b(are)g Fo(list*)291
1193 y Fr(whic)n(h)29 b(w)n(alks)f(do)n(wn)h(the)h(elemen)n(ts)g(of)f
(a)g(list)h(and)f Fo(vector*)e Fr(whic)n(h)i(do)r(es)h(the)g(same)e
(for)291 1292 y(v)n(ectors.)35 b(F)-7 b(or)26 b(eac)n(h)h(iteration,)f
(eac)n(h)g Fq(element-variable)36 b Fr(is)27 b(b)r(ound)g(to)g(the)g
(next)h(elemen)n(t)291 1392 y(of)f(the)h(sequence.)36
b(The)28 b Fq(se)l(quenc)l(e-data)34 b Fr(giv)n(es)27
b(the)h(actual)f(list)h(or)e(v)n(ector)h(or)f(whatev)n(er.)415
1493 y(If)35 b(there)f(is)g(a)g Fq(\014nal-expr)l(ession)6
b Fr(,)36 b(it)f(is)f(ev)-5 b(aluated)34 b(when)g(the)h(end)f(of)h(one)
e(or)h(more)291 1593 y(sequences)29 b(is)h(reac)n(hed.)44
b(If)30 b(the)h Fq(b)l(o)l(dy-expr)l(ession)38 b Fr(do)r(es)30
b(not)g(call)g Fq(lo)l(op-name)38 b Fr(the)30 b Fq(\014nal-)291
1693 y(expr)l(ession)39 b Fr(is)33 b(not)g(ev)-5 b(aluated.)52
b(The)33 b Fq(state-variable)6 b Fr(s)35 b(are)d(visible)g(in)i
Fq(\014nal-expr)l(ession)291 1792 y Fr(but)28 b(the)g
Fq(se)l(quenc)l(e-variable)6 b Fr(s)29 b(are)d(not.)415
1894 y(The)j Fq(b)l(o)l(dy-expr)l(ession)36 b Fr(and)29
b(the)g Fq(\014nal-expr)l(ession)36 b Fr(are)28 b(in)h(tail-p)r
(osition)f(within)i(the)291 1993 y Fo(iterate)p Fr(.)48
b(Unlik)n(e)33 b(named-)p Fo(let)p Fr(,)f(the)h(b)r(eha)n(vior)e(of)h
(a)h(non-tail-recursiv)n(e)c(call)j(to)h Fq(lo)l(op-)291
2093 y(name)c Fr(is)22 b(unsp)r(eci\014ed)h(\(b)r(ecause)f(iterating)g
(do)n(wn)g(a)g(sequence)g(ma)n(y)f(in)n(v)n(olv)n(e)g(side)i
(e\013ects,)291 2193 y(suc)n(h)k(as)g(reading)f(c)n(haracters)f(from)j
(a)f(p)r(ort\).)291 2435 y Fe(5.19.2)112 b Fb(Reduce)291
2591 y Fr(If)19 b(an)f Fo(iterate)e Fr(expression)i(is)g(not)h(mean)n
(t)g(to)f(terminate)h(b)r(efore)f(a)h(sequence)f(has)g(reac)n(hed)291
2691 y(its)30 b(end,)i Fq(b)l(o)l(dy-expr)l(ession)38
b Fr(will)31 b(alw)n(a)n(ys)e(end)i(with)g(a)f(tail)h(call)f(to)h
Fq(lo)l(op-name)6 b Fr(.)47 b Fo(Reduce)291 2791 y Fr(is)28
b(a)g(macro)f(that)i(mak)n(es)e(this)i(common)e(case)h(explicit.)40
b(The)28 b(syn)n(tax)f(of)35 b Fo(reduce)26 b Fr(is)j(the)291
2890 y(same)18 b(as)g(that)i(of)25 b Fo(iterate)p Fr(,)18
b(except)h(that)h(there)e(is)h(no)g Fq(lo)l(op-name)6
b Fr(.)36 b(The)19 b Fq(b)l(o)l(dy-expr)l(ession)291
2990 y Fr(returns)26 b(new)g(v)-5 b(alues)27 b(of)f(the)h
Fq(state-variable)6 b Fr(s)29 b(instead)d(of)h(passing)f(them)h(to)f
Fq(lo)l(op-name)6 b Fr(.)291 3090 y(Th)n(us)30 b Fq(b)l(o)l(dy-expr)l
(ession)38 b Fr(m)n(ust)31 b(return)f(as)g(man)n(y)g(v)-5
b(alues)31 b(as)f(there)g(are)g(state)g(v)-5 b(ariables.)291
3189 y(By)21 b(sp)r(ecial)h(disp)r(ensation,)h(if)g(there)f(are)f(no)h
(state)g(v)-5 b(ariables)21 b(then)i Fq(b)l(o)l(dy-expr)l(ession)30
b Fr(ma)n(y)291 3289 y(return)d(an)n(y)g(n)n(um)n(b)r(er)g(of)g(v)-5
b(alues,)28 b(all)f(of)h(whic)n(h)f(are)g(ignored.)415
3390 y(The)h(syn)n(tax)e(of)34 b Fo(reduce)26 b Fr(is:)p
Black Black 378 3564 a Fo(\(reduce)40 b(\(\()p Fq(se)l(quenc)l(e-typ)l
(e)49 b(element-variable)j(se)l(quenc)l(e-data)e Fo(...\))814
3663 y(...\))770 3763 y(\(\()p Fq(state-variable)h(initial-value)6
b Fo(\))814 3862 y(...\))465 3962 y Fq(b)l(o)l(dy-expr)l(ession)465
4062 y Fo([)p Fq(\014nal-expr)l(ession)g Fo(]\))415 4233
y Fr(The)29 b(v)-5 b(alue\(s\))29 b(returned)f(b)n(y)g(an)h(instance)f
(of)35 b Fo(reduce)26 b Fr(is)j(the)g(v)-5 b(alue\(s\))29
b(returned)f(b)n(y)291 4333 y(the)38 b Fq(\014nal-expr)l(ession)6
b Fr(,)41 b(if)d(presen)n(t,)h(or)e(the)h(curren)n(t)f(v)-5
b(alue\(s\))38 b(of)g(the)g(state)f(v)-5 b(ariables)291
4433 y(when)27 b(the)h(end)g(of)g(one)f(or)g(more)f(sequences)h(is)h
(reac)n(hed.)415 4534 y(A)i Fo(reduce)d Fr(expression)h(can)h(b)r(e)h
(rewritten)f(as)f(an)i(equiv)-5 b(alen)n(t)29 b Fo(iterate)d
Fr(expression)291 4634 y(b)n(y)g(adding)g(a)g Fq(lo)l(op-var)37
b Fr(and)26 b(a)g(wrapp)r(er)f(for)h(the)h Fq(b)l(o)l(dy-expr)l(ession)
34 b Fr(that)26 b(calls)g(the)h Fq(lo)l(op-)291 4733
y(var)9 b Fr(.)p Black Black 291 4907 a Fo(\(iterate)40
b(loop)683 5006 y(\(\()p Fq(se)l(quenc)l(e-typ)l(e)48
b(element-variable)k(se)l(quenc)l(e-data)e Fo(...\))p
Black 1681 5255 a Fr(59)p Black eop end
%%Page: 60 68
TeXDict begin 60 67 bop 0 TeXcolorgray Black Black Black
1175 523 a Fo(...\))1131 623 y(\(\()p Fq(state-variable)51
b(initial-value)6 b Fo(\))1175 722 y(...\))826 822 y(\(call-with-value)
o(s)38 b(\(lambda)i(\(\))1698 922 y Fq(b)l(o)l(dy-expr)l(ession)6
b Fo(\))1611 1021 y(loop\))826 1121 y([)p Fq(\014nal-expr)l(ession)g
Fo(]\))739 1385 y Fe(5.19.3)112 b(Sequence)39 b(t)m(yp)s(es)739
1550 y Fr(The)28 b(prede\014ned)f(sequence)g(t)n(yp)r(es)h(are:)p
Black 755 1734 a Fn(\017)p Black 42 w Fo(\(list*)39 b
Fq(elt-var)50 b(list)8 b Fo(\))1781 b Fr(syn)n(tax)p
Black 755 1833 a Fn(\017)p Black 42 w Fo(\(list-spine*)36
b Fq(elt-var)51 b(list)8 b Fo(\))1519 b Fr(syn)n(tax)p
Black 755 1933 a Fn(\017)p Black 42 w Fo(\(list-spine-cyc)o(le)o(-sa)o
(fe)o(*)36 b Fq(elt-var)50 b(list)g(on-cycle-thunk)9
b Fo(\))465 b Fr(syn)n(tax)p Black 755 2033 a Fn(\017)p
Black 42 w Fo(\(vector*)38 b Fq(elt-var)50 b(ve)l(ctor)9
b Fo(\))1586 b Fr(syn)n(tax)p Black 755 2132 a Fn(\017)p
Black 42 w Fo(\(string*)38 b Fq(elt-var)50 b(string)7
b Fo(\))1596 b Fr(syn)n(tax)p Black 755 2232 a Fn(\017)p
Black 42 w Fo(\(count*)38 b Fq(elt-var)51 b(start)e Fo([)p
Fq(end)h Fo([)p Fq(step)5 b Fo(]]\))1137 b Fr(syn)n(tax)p
Black 755 2332 a Fn(\017)p Black 42 w Fo(\(bits*)39 b
Fq(elt-var)50 b(i)h Fo([)p Fq(size)6 b Fo(]\))1596 b
Fr(syn)n(tax)p Black 755 2431 a Fn(\017)p Black 42 w
Fo(\(input*)38 b Fq(elt-var)51 b(input-p)l(ort)e(r)l(e)l(ad-pr)l(o)l(c)
l(e)l(dur)l(e)6 b Fo(\))924 b Fr(syn)n(tax)p Black 755
2531 a Fn(\017)p Black 42 w Fo(\(stream*)38 b Fq(elt-var)50
b(pr)l(o)l(c)l(e)l(dur)l(e)e(initial-data)6 b Fo(\))1024
b Fr(syn)n(tax)863 2715 y(F)-7 b(or)24 b(lists,)h(v)n(ectors,)e(and)h
(strings)f(the)i(elemen)n(t)f(v)-5 b(ariable)23 b(is)h(b)r(ound)g(to)g
(the)h(successiv)n(e)739 2815 y(elemen)n(ts)i(of)h(the)g(list)g(or)e(v)
n(ector,)h(or)f(the)i(c)n(haracters)e(in)i(the)g(string.)863
2920 y(F)-7 b(or)35 b Fo(list-spine*)30 b Fr(the)36 b(elemen)n(t)f(v)-5
b(ariable)34 b(is)h(b)r(ound)g(to)g(the)g(successiv)n(e)f(pairs)g(in)
739 3020 y(the)g(spine)f(of)h(the)g(list.)54 b Fo(List-spine-cycle-)o
(saf)o(e*)27 b Fr(is)33 b(similar,)i(but)f(calls)f Fq(on-cycle-)739
3119 y(thunk)43 b Fr(with)35 b(no)f(argumen)n(ts)f(and)h(with)h(the)g
(con)n(tin)n(uation)e(of)h(the)h(lo)r(op)f(macro)f(at)i(an)739
3219 y(unsp)r(eci\014ed)28 b(time)g(if)35 b Fq(list)g
Fr(con)n(tains)27 b(a)g(cycle.)863 3325 y(F)-7 b(or)27
b Fo(count*)f Fr(the)i(elemen)n(t)f(v)-5 b(ariable)27
b(is)g(b)r(ound)h(to)g(the)g(elemen)n(ts)f(of)h(the)g(sequence)p
Black Black 782 3515 a Fq(start)8 b Fo(,)43 b Fq(start)51
b Fo(+)43 b Fq(step)5 b Fo(,)44 b Fq(start)51 b Fo(+)43
b(2)p Fq(step)5 b Fo(,)43 b(...,)f Fq(end)739 3699 y
Fr(inclusiv)n(e)34 b(of)41 b Fq(start)h Fr(and)35 b(exclusiv)n(e)f(of)
41 b Fq(end)9 b Fr(.)58 b(The)35 b(default)g Fq(step)40
b Fr(is)34 b(1.)58 b(The)35 b(sequence)739 3799 y(do)r(es)30
b(not)g(terminate)g(if)h(no)f Fq(end)40 b Fr(is)30 b(giv)n(en)f(or)h
(if)h(there)f(is)g(no)g Fc(N)37 b(>)27 b Fr(0)j(suc)n(h)g(that)g
Fq(end)40 b Fr(=)739 3898 y Fq(start)g Fr(+)32 b(N)p
Fq(step)39 b Fr(\()p Fo(=)32 b Fr(is)h(used)g(to)f(test)h(for)f
(termination\).)52 b(F)-7 b(or)32 b(example,)i Fo(\(count*)40
b(i)k(0)739 3998 y(-1\))31 b Fr(do)r(esn't)h(terminate)g(b)r(ecause)g
(it)g(b)r(egins)g(past)g(the)h Fq(end)41 b Fr(v)-5 b(alue)32
b(and)g Fo(\(count*)40 b(i)k(0)739 4098 y(1)f(2\))27
b Fr(do)r(esn't)h(terminate)f(b)r(ecause)g(it)h(skips)f(o)n(v)n(er)f
(the)i Fq(end)37 b Fr(v)-5 b(alue.)863 4203 y(F)e(or)25
b Fo(bits*)p Fr(,)e(the)j(elemen)n(t)f(v)-5 b(ariable)24
b(is)h(b)r(ound)g(to)g(a)g(sequence)f(of)h(represen)n(tations)e(of)739
4303 y(successiv)n(e)d(bit-\014elds)h(of)28 b Fq(i)8
b Fr(,)24 b(from)d(least)g(to)g(most)g(signi\014can)n(t.)34
b(If)28 b Fq(size)g Fr(is)21 b(presen)n(t,)h(it)g(m)n(ust)739
4402 y(b)r(e)29 b(a)f(p)r(ositiv)n(e)g(exact)g(in)n(teger,)g(and)h(the)
g(elemen)n(t)f(v)-5 b(ariable)28 b(is)h(b)r(ound)g(to)f(a)g(sequence)g
(of)739 4502 y Fq(size)6 b Fr(-bit)29 b(in)n(tegers.)38
b(If)e Fq(size)f Fr(is)28 b(omitted,)h Fo(bits*)e Fr(iterates)g
(through)h(single)g(bits,)h(and)f(the)739 4602 y(elemen)n(t)33
b(v)-5 b(ariable)31 b(is)i(b)r(ound)g(to)f(a)g(sequence)g(of)h(b)r(o)r
(oleans.)51 b Fo(#t)32 b Fr(represen)n(ts)f(1,)j(and)e
Fo(#f)739 4701 y Fr(represen)n(ts)26 b(0.)863 4807 y(F)-7
b(or)32 b Fo(input*)e Fr(the)j(elemen)n(ts)f(are)g(the)g(results)g(of)h
(successiv)n(e)e(applications)g(of)39 b Fq(r)l(e)l(ad-)739
4907 y(pr)l(o)l(c)l(e)l(dur)l(e)45 b Fr(to)39 b Fq(input-p)l(ort)8
b Fr(.)69 b(The)39 b(sequence)f(ends)h(when)g Fq(r)l(e)l(ad-pr)l(o)l(c)
l(e)l(dur)l(e)46 b Fr(returns)38 b(an)739 5006 y(end-of-\014le)27
b(ob)5 b(ject.)p Black 2130 5255 a(60)p Black eop end
%%Page: 61 69
TeXDict begin 61 68 bop 0 TeXcolorgray Black Black Black
415 523 a Fr(F)-7 b(or)23 b(a)f(stream,)i(the)f Fq(pr)l(o)l(c)l(e)l
(dur)l(e)30 b Fr(tak)n(es)22 b(the)i(curren)n(t)e(data)h(v)-5
b(alue)23 b(as)f(an)h(argumen)n(t)f(and)291 623 y(returns)k(t)n(w)n(o)g
(v)-5 b(alues,)26 b(the)i(next)f(v)-5 b(alue)26 b(of)h(the)g(sequence)g
(and)f(a)h(new)f(data)h(v)-5 b(alue.)36 b(If)28 b(the)291
722 y(new)f(data)g(is)h Fo(#f)f Fr(then)h(the)g(previous)e(elemen)n(t)i
(w)n(as)f(the)h(last)f(one.)36 b(F)-7 b(or)27 b(example,)p
Black Black 378 891 a Fo(\(list*)41 b(elt)h(my-list\))291
1058 y Fr(is)27 b(the)h(same)f(as)p Black Black 378 1227
a Fo(\(stream*)40 b(elt)i(list->stream)d(my-list\))291
1395 y Fr(where)27 b Fo(list->stream)22 b Fr(is)p Black
Black 378 1563 a Fo(\(lambda)40 b(\(list\))465 1663 y(\(if)i(\(null?)f
(list\))639 1762 y(\(values)g('ignored)f(#f\))639 1862
y(\(values)h(\(car)h(list\))f(\(cdr)h(list\)\)\)\))291
2097 y Fe(5.19.4)112 b(Sync)m(hronous)39 b(sequences)291
2252 y Fr(When)25 b(using)g(the)g(sequence)g(t)n(yp)r(es)g(describ)r
(ed)f(ab)r(o)n(v)n(e,)h(a)f(lo)r(op)h(terminates)g(when)g(an)n(y)f(of)
291 2351 y(its)29 b(sequences)f(reac)n(hes)f(its)i(end.)40
b(T)-7 b(o)29 b(help)g(detect)g(bugs)f(it)h(is)g(useful)g(to)g(ha)n(v)n
(e)e(sequence)291 2451 y(t)n(yp)r(es)e(that)h(c)n(hec)n(k)f(to)h(see)f
(if)h(t)n(w)n(o)f(or)g(more)g(sequences)f(end)i(on)g(the)g(same)f
(iteration.)36 b(F)-7 b(or)291 2551 y(this)24 b(purp)r(ose)f(there)h
(is)g(second)f(set)h(of)g(sequence)f(t)n(yp)r(es)h(called)g(sync)n
(hronous)e(sequences.)291 2650 y(These)28 b(are)h(iden)n(tical)g(to)g
(the)g(ones)g(listed)g(ab)r(o)n(v)n(e)f(except)h(that)h(they)f(cause)g
(an)g(error)e(to)291 2750 y(b)r(e)i(signalled)f(if)h(a)f(lo)r(op)h(is)f
(terminated)h(b)n(y)f(a)h(sync)n(hronous)e(sequence)h(and)g(some)g
(other)291 2849 y(sync)n(hronous)d(sequence)i(did)h(not)g(reac)n(h)e
(its)i(end)g(on)f(the)h(same)f(iteration.)415 2950 y(Sequences)k(are)e
(c)n(hec)n(k)n(ed)h(for)g(termination)h(in)g(order,)f(from)h(left)h(to)
e(righ)n(t,)h(and)g(if)g(a)291 3049 y(lo)r(op)c(is)g(terminated)h(b)n
(y)f(a)g(non-sync)n(hronous)e(sequence)i(no)h(further)f(c)n(hec)n(king)
g(is)g(done.)415 3149 y(The)h(sync)n(hronous)d(sequences)i(are:)p
Black 307 3301 a Fn(\017)p Black 41 w Fo(\(list\045)39
b Fq(elt-var)51 b(list)8 b Fo(\))1781 b Fr(syn)n(tax)p
Black 307 3400 a Fn(\017)p Black 41 w Fo(\(list-spine\045)37
b Fq(elt-var)51 b(list)8 b Fo(\))1519 b Fr(syn)n(tax)p
Black 307 3500 a Fn(\017)p Black 41 w Fo(\(list-spine-cycle)o(-s)o(afe)
o(\045)35 b Fq(elt-var)51 b(list)f(on-cycle-thunk)9 b
Fo(\))465 b Fr(syn)n(tax)p Black 307 3599 a Fn(\017)p
Black 41 w Fo(\(vector\045)38 b Fq(elt-var)51 b(ve)l(ctor)9
b Fo(\))1586 b Fr(syn)n(tax)p Black 307 3699 a Fn(\017)p
Black 41 w Fo(\(string\045)38 b Fq(elt-var)51 b(string)7
b Fo(\))1596 b Fr(syn)n(tax)p Black 307 3799 a Fn(\017)p
Black 41 w Fo(\(count\045)39 b Fq(elt-var)51 b(start)e(end)h
Fo([)p Fq(step)5 b Fo(]\))1225 b Fr(syn)n(tax)p Black
307 3898 a Fn(\017)p Black 41 w Fo(\(input\045)39 b Fq(elt-var)51
b(input-p)l(ort)e(r)l(e)l(ad-pr)l(o)l(c)l(e)l(dur)l(e)6
b Fo(\))924 b Fr(syn)n(tax)p Black 307 3998 a Fn(\017)p
Black 41 w Fo(\(stream\045)38 b Fq(elt-var)51 b(pr)l(o)l(c)l(e)l(dur)l
(e)d(initial-data)6 b Fo(\))1024 b Fr(syn)n(tax)415 4149
y(Note)35 b(that)h(the)f(sync)n(hronous)e Fo(count\045)g
Fr(m)n(ust)i(ha)n(v)n(e)f(an)h Fq(end)9 b Fr(,)37 b(unlik)n(e)e(the)h
(nonsyn-)291 4249 y(c)n(hronous)26 b Fo(count*)p Fr(.)291
4484 y Fe(5.19.5)112 b(Examples)291 4639 y Fr(Gathering)26
b(the)i(indexes)g(of)f(list)h(elemen)n(ts)g(that)f(answ)n(er)g(true)g
(to)h(some)f(predicate.)p Black Black 291 4807 a Fo(\(lambda)40
b(\(my-list)h(predicate\))378 4907 y(\(reduce)f(\(\(list*)h(elt)h
(my-list\))770 5006 y(\(count*)f(i)i(0\)\))p Black 1681
5255 a Fr(61)p Black eop end
%%Page: 62 70
TeXDict begin 62 69 bop 0 TeXcolorgray Black Black Black
1175 523 a Fo(\(\(hits)41 b('\(\)\)\))913 623 y(\(if)i(\(predicate)c
(elt\))1088 722 y(\(cons)i(i)i(hits\))1088 822 y(hits\))913
922 y(\(reverse)e(hits\)\))739 1089 y Fr(Lo)r(oking)26
b(for)h(the)h(index)g(of)g(an)f(elemen)n(t)h(of)f(a)g(list.)p
Black Black 739 1257 a Fo(\(lambda)41 b(\(my-list)f(predicate\))826
1356 y(\(iterate)g(loop)1218 1456 y(\(\(list*)h(elt)h(my-list\))1262
1556 y(\(count*)f(i)i(0\)\))1218 1655 y(\(\))1394 b(;)43
b(no)g(state)913 1755 y(\(if)g(\(predicate)c(elt\))1088
1855 y(i)1088 1954 y(\(loop\)\)\)\))739 2122 y Fr(Reading)27
b(one)g(line.)p Black Black 739 2289 a Fo(\(define)41
b(\(read-line)e(port\))826 2389 y(\(iterate)h(loop)1218
2489 y(\(\(input*)h(c)i(port)f(read-char\)\))1218 2588
y(\(\(chars)f('\(\)\)\))913 2688 y(\(if)i(\(char=?)d(c)j(#\\newline\))
1088 2788 y(\(list->string)38 b(\(reverse)i(chars\)\))1088
2887 y(\(loop)h(\(cons)h(c)h(chars\)\)\))913 2987 y(\(if)g(\(null?)e
(chars\))1088 3087 y(\(eof-object\))1088 3186 y(;)i(no)g(newline)d(at)j
(end)f(of)h(file)1088 3286 y(\(list->string)38 b(\(reverse)i
(chars\)\)\)\)\))739 3453 y Fr(Coun)n(ting)27 b(the)i(lines)f(in)g(a)g
(\014le.)38 b(W)-7 b(e)28 b(can't)g(use)g Fo(count*)e
Fr(b)r(ecause)h(w)n(e)h(need)g(the)g(v)-5 b(alue)28 b(of)739
3553 y(the)g(coun)n(t)f(after)g(the)h(lo)r(op)g(has)f(\014nished.)p
Black Black 739 3721 a Fo(\(define)41 b(\(line-count)e(name\))826
3820 y(\(call-with-input)o(-fi)o(le)e(name)913 3920 y(\(lambda)k
(\(in\))1000 4020 y(\(reduce)g(\(\(input*)f(l)k(in)e(read-line\)\))1349
4119 y(\(\(i)g(0\)\))1088 4219 y(\(+)g(i)i(1\)\)\)\)\))739
4454 y Fe(5.19.6)112 b(De\014ning)39 b(sequence)f(t)m(yp)s(es)739
4608 y Fr(The)24 b(sequence)g(t)n(yp)r(es)g(are)f(ob)5
b(ject-orien)n(ted)23 b(macros)g(similar)g(to)i(en)n(umerations.)34
b(A)25 b(non-)739 4707 y(sync)n(hronous)c(sequence)i(macro)e(needs)i
(to)g(supply)h(three)f(v)-5 b(alues:)34 b Fo(#f)22 b
Fr(to)h(indicate)g(that)h(it)739 4807 y(isn't)g(sync)n(hronous,)f(a)h
(list)g(of)g(state)f(v)-5 b(ariables)23 b(and)h(their)g(initializers,)g
(and)g(the)g(co)r(de)g(for)739 4907 y(one)i(iteration.)36
b(The)26 b(\014rst)g(t)n(w)n(o)g(metho)r(ds)h(are)e(CPS'ed:)36
b(they)27 b(tak)n(e)f(another)f(macro)g(and)739 5006
y(argumen)n(t)32 b(to)i(whic)n(h)f(to)h(pass)f(their)g(result.)55
b(The)33 b Fo(sync)f Fr(metho)r(d)i(gets)f(no)h(additional)p
Black 2130 5255 a(62)p Black eop end
%%Page: 63 71
TeXDict begin 63 70 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(argumen)n(ts.)58 b(The)36 b Fo(state-vars)31
b Fr(metho)r(d)36 b(is)f(passed)f(a)h(list)h(of)f(names)g(whic)n(h)g
(will)h(b)r(e)291 623 y(b)r(ound)g(to)g(the)h(argumen)n(ts)e(to)h(the)h
(sequence.)62 b(The)36 b(\014nal)g(metho)r(d,)j(for)d(the)g(step,)j(is)
291 722 y(passed)25 b(the)i(list)g(of)f(names)g(b)r(ound)h(to)g(the)f
(argumen)n(ts)g(and)g(the)h(list)f(of)h(state)f(v)-5
b(ariables.)291 822 y(In)25 b(addition)h(there)f(is)h(a)f(v)-5
b(ariable)25 b(to)g(b)r(e)h(b)r(ound)g(to)g(the)g(next)g(elemen)n(t)g
(of)f(the)h(sequence,)291 922 y(the)i(b)r(o)r(dy)f(expression)g(for)g
(the)h(lo)r(op,)f(and)g(an)h(expression)e(for)h(terminating)g(the)h(lo)
r(op.)415 1022 y(The)g(de\014nition)g(of)34 b Fo(list*)25
b Fr(is)p Black Black 291 1189 a Fo(\(define-syntax)37
b(list*)378 1289 y(\(syntax-rules)h(\(sync)j(state-vars)f(step\))465
1389 y(\(\(list*)h(sync)h(\(next)f(more\)\))509 1488
y(\(next)g(#f)i(more\)\))465 1588 y(\(\(list*)e(state-vars)e
(\(start-list\))g(\(next)i(more\)\))509 1687 y(\(next)g(\(\(list-var)e
(start-list\)\))g(more\)\))465 1787 y(\(\(list*)i(step)h
(\(start-list\))c(\(list-var\))814 1887 y(value-var)h(loop-body)h
(final-exp\))509 1986 y(\(if)i(\(null?)f(list-var\))683
2086 y(final-exp)683 2186 y(\(let)h(\(\(value-var)d(\(car)j
(list-var\)\))944 2285 y(\(list-var)e(\(cdr)i(list-var\)\)\))770
2385 y(loop-body\)\)\)\)\))415 2552 y Fr(Sync)n(hronized)34
b(sequences)g(are)g(the)i(same,)g(except)f(that)g(they)h(need)f(to)g
(pro)n(vide)e(a)291 2652 y(termination)c(test)i(to)f(b)r(e)g(used)g
(when)g(some)g(other)f(sync)n(hronized)g(metho)r(d)h(terminates)291
2751 y(the)e(lo)r(op.)p Black Black 291 2919 a Fo(\(define-syntax)37
b(list\045)378 3019 y(\(syntax-rules)h(\(sync)j(done\))465
3118 y(\(\(list\045)g(sync)h(\(next)f(more\)\))509 3218
y(\(next)g(#t)i(more\)\))465 3318 y(\(\(list\045)e(done)h
(\(start-list\))c(\(list-var\)\))509 3417 y(\(null?)j(list-var\)\))465
3517 y(\(\(list\045)g(stuff)g(...\))509 3617 y(\(list*)g(stuff)g
(...\)\)\)\))291 3851 y Fe(5.19.7)112 b(Expanded)39 b(co)s(de)291
4005 y Fr(The)27 b(expansion)g(of)p Black Black 378 4173
a Fo(\(reduce)40 b(\(\(list*)h(x)i('\(1)g(2)g(3\)\)\))726
4273 y(\(\(r)g('\(\)\)\))465 4372 y(\(cons)e(x)j(r\)\))291
4540 y Fr(is)p Black Black 378 4707 a Fo(\(let)e(\(\(final)e(\(lambda)h
(\(r\))h(\(values)f(r\)\)\))639 4807 y(\(list)h('\(1)g(2)h(3\)\))639
4907 y(\(r)g('\(\)\)\))465 5006 y(\(let)f(loop)g(\(\(list)f(list\))g
(\(r)i(r\)\))p Black 1681 5255 a Fr(63)p Black eop end
%%Page: 64 72
TeXDict begin 64 71 bop 0 TeXcolorgray Black Black Black
1000 523 a Fo(\(if)43 b(\(null?)e(list\))1175 623 y(\(final)g(r\))1175
722 y(\(let)h(\(\(x)g(\(car)g(list\)\))1436 822 y(\(list)g(\(cdr)g
(list\)\)\))1262 922 y(\(let)g(\(\(continue)d(\(lambda)i(\(r\))2046
1021 y(\(loop)h(list)g(r\)\)\)\))1349 1121 y(\(continue)e(\(cons)h(x)j
(r\)\)\)\)\)\)\))863 1302 y Fr(The)26 b(only)g(ine\016ciencies)g(in)g
(this)h(co)r(de)e(are)g(the)i Fo(final)d Fr(and)i Fo(continue)c
Fr(pro)r(cedures,)739 1402 y(b)r(oth)32 b(of)f(whic)n(h)g(could)g(b)r
(e)h(substituted)g(in-line.)48 b(The)31 b(macro)f(expander)h(could)g
(do)g(the)739 1501 y(substitution)d(for)g Fo(continue)c
Fr(when)k(there)g(is)g(no)f(explicit)h(pro)r(ceed)g(v)-5
b(ariable,)27 b(as)g(in)h(this)739 1601 y(case,)f(but)h(not)f(in)h
(general.)739 1902 y Fj(5.20)135 b(Sorting)46 b(lists)g(and)e(v)l
(ectors)739 2094 y Fr(\(This)31 b(section,)g(as)f(the)h(libraries)e(it)
i(describ)r(es,)g(w)n(as)f(written)h(mostly)f(b)n(y)h(Olin)f(Shiv)n
(ers)739 2193 y(for)d(the)h(draft)f(of)h(SRFI)g(32.\))863
2298 y(The)g(sort)f(libraries)f(in)i(Sc)n(heme)f(48)g(include)p
Black 863 2479 a Fn(\017)p Black 41 w Fr(v)n(ector)g(insert)g(sort)g
(\(stable\))p Black 863 2666 a Fn(\017)p Black 41 w Fr(v)n(ector)g
(heap)g(sort)p Black 863 2852 a Fn(\017)p Black 41 w
Fr(v)n(ector)33 b(quic)n(k)h(sort)f(\(with)h(regular)f(comparisons)f
(and)h(with)i(median-of-3)e(piv)n(ot)946 2952 y(pic)n(king\))p
Black 863 3138 a Fn(\017)p Black 41 w Fr(v)n(ector)27
b(merge)f(sort)h(\(stable\))p Black 863 3324 a Fn(\017)p
Black 41 w Fr(pure)h(and)f(destructiv)n(e)g(list)h(merge)f(sort)f
(\(stable\))p Black 863 3511 a Fn(\017)p Black 41 w Fr(stable)i(v)n
(ector)e(and)h(list)h(merge)p Black 863 3697 a Fn(\017)p
Black 41 w Fr(miscellaneous)43 b(sort-related)f(pro)r(cedures:)67
b(v)n(ector)42 b(and)i(list)g(merging,)i(sorted)946 3796
y(predicates,)23 b(v)n(ector)e(binary)g(searc)n(h,)h(v)n(ector)e(and)i
(list)g(delete-equal-neigh)n(b)r(or)e(pro-)946 3896 y(cedures.)p
Black 863 4082 a Fn(\017)p Black 41 w Fr(a)27 b(general,)e
(non-algorithmic)g(set)h(of)h(pro)r(cedure)f(names)g(for)g(general)f
(sorting)g(and)946 4182 y(merging)739 4441 y Fe(5.20.1)112
b(Design)38 b(rules)739 4604 y Fm(What)22 b(vs.)39 b(ho)m(w)83
b Fr(There)18 b(are)g(t)n(w)n(o)g(di\013eren)n(t)h(in)n(terfaces:)32
b(\\what")18 b(\(simple\))h(and)g(\\ho)n(w")739 4704
y(\(detailed\).)p Black 739 4907 a Fm(Simple)p Black
40 w Fr(y)n(ou)32 b(sp)r(ecify)i(seman)n(tics:)47 b(datat)n(yp)r(e)33
b(\(list)g(or)g(v)n(ector\),)g(m)n(utabilit)n(y)-7 b(,)35
b(and)e(sta-)946 5006 y(bilit)n(y)-7 b(.)p Black 2130
5255 a(64)p Black eop end
%%Page: 65 73
TeXDict begin 65 72 bop 0 TeXcolorgray Black Black Black
Black 291 523 a Fm(Detailed)p Black 40 w Fr(y)n(ou)25
b(sp)r(ecify)g(the)g(actual)f(algorithm)g(\(quic)n(k,)h(heap,)g
(insert,)g(merge\).)36 b(Di\013er-)498 623 y(en)n(t)26
b(algorithms)e(ha)n(v)n(e)g(di\013eren)n(t)h(prop)r(erties,)g(b)r(oth)h
(seman)n(tic)f(and)g(pragmatic,)g(so)498 722 y(these)j(exp)r(orts)f
(are)f(necessary)-7 b(.)498 858 y(It)29 b(is)f(necessarily)e(the)j
(case)e(that)i(the)g(sp)r(eci\014cations)e(of)h(these)h(pro)r(cedures)e
(mak)n(e)498 957 y(statemen)n(ts)i(ab)r(out)h(execution)f
(\\pragmatics.")40 b(F)-7 b(or)29 b(example,)g(the)h(sole)f(distinc-)
498 1057 y(tion)23 b(b)r(et)n(w)n(een)f(heap)h(sort)e(and)i(quic)n(k)f
(sort|b)r(oth)g(of)h(whic)n(h)f(are)g(pro)n(vided)f(b)n(y)i(this)498
1157 y(library|-is)28 b(one)h(of)g(execution)g(time,)i(whic)n(h)e(is)g
(not)h(a)f(\\seman)n(tic")e(distinction.)498 1256 y(Similar)36
b(resource-use)f(statemen)n(ts)h(are)f(made)i(ab)r(out)f(\\iterativ)n
(e")f(pro)r(cedures,)498 1356 y(meaning)g(that)h(they)f(can)g(execute)g
(on)g(input)i(of)e(arbitrary)e(size)i(in)h(a)f(constan)n(t)498
1456 y(n)n(um)n(b)r(er)27 b(of)h(stac)n(k)f(frames.)291
1678 y Fm(Consistency)32 b(across)h(pro)s(cedure)f(signatures)83
b Fr(The)28 b(t)n(w)n(o)g(in)n(terfaces)f(share)h(com-)291
1778 y(mon)e(pro)r(cedure)g(signatures)f(wherev)n(er)h(p)r(ossible,)g
(to)h(facilitate)g(switc)n(hing)f(a)g(giv)n(en)g(call)291
1877 y(from)h(one)g(pro)r(cedure)g(to)g(another.)291
2100 y Fm(Less-than)j(parameter)i(\014rst,)e(data)i(parameter)f(after)
84 b Fr(These)26 b(pro)r(cedures)g(uni-)291 2200 y(formly)d(observ)n(e)
f(the)i(follo)n(wing)f(parameter)f(order:)33 b(the)24
b(data)g(to)f(b)r(e)h(sorted)f(comes)g(after)291 2299
y(the)28 b(comparison)d(pro)r(cedure.)36 b(That)28 b(is,)f(w)n(e)h
(write)p Black Black 378 2489 a Fo(\(sort)41 b Fc(<)i
Fq(list)9 b Fo(\))415 2677 y Fr(not)p Black Black 378
2866 a Fo(\(sort)41 b Fq(list)52 b Fc(<)p Fo(\))291 3088
y Fm(Ordering,)40 b(comparison)f(pro)s(cedures)g(and)h(stabilit)m(y)82
b Fr(These)34 b(routines)g(tak)n(e)f(a)291 3188 y Fc(<)k
Fr(comparison)e(pro)r(cedure,)k(not)e(a)g Fn(\024)g Fr(comparison)f
(pro)r(cedure,)j(and)e(they)h(sort)e(in)n(to)291 3288
y(increasing)31 b(order.)50 b(The)33 b(di\013erence)g(b)r(et)n(w)n(een)
f(a)g Fc(<)h Fr(sp)r(ec)f(and)h(a)f Fn(\024)g Fr(sp)r(ec)h(comes)f(up)h
(in)291 3387 y(t)n(w)n(o)26 b(places:)p Black 415 3575
a Fn(\017)p Black 41 w Fr(the)i(de\014nition)g(of)g(an)f(ordered)f(or)h
(sorted)g(data)g(set,)g(and)p Black 415 3747 a Fn(\017)p
Black 41 w Fr(the)h(de\014nition)g(of)g(a)f(stable)g(sorting)g
(algorithm.)415 3934 y(W)-7 b(e)25 b(sa)n(y)f(that)i(a)e(data)h(set)g
(\(a)f(list)i(or)e(v)n(ector\))g(is)h Fq(sorte)l(d)34
b Fr(or)24 b Fq(or)l(der)l(e)l(d)34 b Fr(if)26 b(it)f(con)n(tains)f(no)
291 4034 y(adjacen)n(t)j(pair)g(of)g(v)-5 b(alues)27
b Fc(:)14 b(:)g(:)g(x;)g(y)j(:)d(:)g(:)27 b Fr(suc)n(h)h(that)g
Fc(y)d(<)e(x)p Fr(.)415 4135 y(In)28 b(other)f(w)n(ords,)f(scanning)h
(across)f(the)i(data)f(nev)n(er)f(tak)n(es)h(a)g(\\do)n(wn)n(w)n(ards")
d(step.)415 4236 y(If)j(y)n(ou)e(use)i(a)e Fn(\024)h
Fr(pro)r(cedure)g(where)f(these)i(algorithms)e(exp)r(ect)h(a)g
Fc(<)g Fr(pro)r(cedure,)g(y)n(ou)291 4336 y(ma)n(y)20
b(not)h(get)g(the)g(answ)n(ers)e(y)n(ou)h(exp)r(ect.)35
b(F)-7 b(or)21 b(example,)h(the)f Fo(list-sorted?)30
b Fr(pro)r(cedure)291 4435 y(will)k(return)g(false)g(if)h(y)n(ou)f
(pass)f(it)i(a)f Fn(\024)g Fr(comparison)f(pro)r(cedure)g(and)i(an)f
(ordered)f(list)291 4535 y(con)n(taining)26 b(adjacen)n(t)h(equal)g
(elemen)n(ts.)415 4636 y(A)22 b(\\stable")e(sort)h(is)h(one)f(that)h
(preserv)n(es)e(the)i(pre-existing)e(order)g(of)i(equal)f(elemen)n(ts.)
291 4735 y(Supp)r(ose,)h(for)e(example,)i(that)f(w)n(e)f(sort)g(a)g
(list)h(of)g(n)n(um)n(b)r(ers)f(b)n(y)h(comparing)e(their)i(absolute)
291 4835 y(v)-5 b(alues,)27 b(i.e.,)h(using)f(comparison)f(pro)r
(cedure)p Black Black 291 5006 a Fo(\(lambda)40 b(\(x)j(y\))g(\(<)g
(\(abs)e(x\))i(\(abs)f(y\)\)\))p Black 1681 5255 a Fr(65)p
Black eop end
%%Page: 66 74
TeXDict begin 66 73 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(If)28 b(w)n(e)f(sort)g(a)g(list)h(that)g(con)n(tains)e(b)r
(oth)i(3)g(and)f(-3:)1894 668 y Fc(:)14 b(:)g(:)g Fr(3)p
Fc(;)g(:)g(:)g(:)f(;)h Fn(\000)p Fr(3)g Fc(:)g(:)g(:)739
813 y Fr(then)37 b(a)f(stable)h(sort)e(is)i(an)f(algorithm)g(that)g
(will)h(not)g(sw)n(ap)f(the)h(order)e(of)h(these)h(t)n(w)n(o)739
913 y(elemen)n(ts,)27 b(that)h(is,)g(the)g(answ)n(er)e(is)h(guaran)n
(teed)f(to)i(to)f(lo)r(ok)g(lik)n(e)1968 1058 y Fc(:)14
b(:)g(:)g Fr(3)p Fc(;)g Fn(\000)p Fr(3)g Fc(:)g(:)g(:)739
1203 y Fr(not)1957 1303 y Fc(:)g(:)g(:)k Fn(\000)g Fr(3)p
Fc(;)c Fr(3)g Fc(:)g(:)g(:)739 1430 y Fr(Cho)r(osing)29
b Fc(<)h Fr(for)g(the)h(comparison)d(pro)r(cedure)i(instead)g(of)g
Fn(\024)g Fr(a\013ects)h(ho)n(w)e(stabilit)n(y)h(is)739
1529 y(co)r(ded.)35 b(Giv)n(en)23 b(an)f(adjacen)n(t)g(pair)g
Fc(x;)14 b(y)s Fr(,)24 b Fo(\(<)43 b Fc(y)j(x)p Fo(\))23
b Fr(means)f(\\)p Fc(x)h Fr(should)f(b)r(e)h(mo)n(v)n(ed)f(in)h(fron)n
(t)739 1629 y(of)30 b Fc(x)p Fr("|otherwise,)f(lea)n(v)n(e)g(things)h
(as)f(they)h(are.)43 b(So)29 b(using)h(a)f Fn(\024)h
Fr(pro)r(cedure)f(where)g(a)h Fc(<)739 1729 y Fr(pro)r(cedure)c(is)i
(exp)r(ected)g(will)g Fq(invert)35 b Fr(stabilit)n(y)-7
b(.)863 1828 y(This)28 b(is)f(due)h(to)g(the)g(de\014nition)g(of)f
(equalit)n(y)-7 b(,)27 b(giv)n(en)g(a)g Fc(<)h Fr(comparator:)p
Black Black 913 1964 a Fo(\(and)42 b(\(not)g(\(<)h(x)g(y\)\))1131
2064 y(\(not)f(\(<)h(y)g(x\)\)\))739 2200 y Fr(The)28
b(de\014nition)g(is)f(rather)g(di\013eren)n(t,)g(giv)n(en)g(a)g
Fn(\024)h Fr(comparator:)p Black Black 913 2336 a Fo(\(and)42
b(\(<=)h(x)g(y\))1131 2436 y(\(<=)g(y)g(x\)\))739 2572
y Fr(A)37 b(\\stable")f(merge)g(is)h(one)f(that)h(reliably)f(fa)n(v)n
(ors)f(one)i(of)g(its)g(data)f(sets)h(when)g(equal)739
2671 y(items)29 b(app)r(ear)g(in)g(b)r(oth)h(data)f(sets.)42
b Fq(A)n(l)t(l)31 b(mer)l(ge)h(op)l(er)l(ations)g(in)g(this)f(libr)l
(ary)i(ar)l(e)f(stable)p Fr(,)739 2771 y(breaking)f(ties)i(b)r(et)n(w)n
(een)f(data)g(sets)g(in)h(fa)n(v)n(or)e(of)h(the)h(\014rst)f(data)g
(set|elemen)n(ts)g(of)h(the)739 2870 y(\014rst)27 b(list)h(come)f(b)r
(efore)h(equal)f(elemen)n(ts)g(in)h(the)g(second)f(list.)863
2970 y(So,)36 b(if)f(w)n(e)f(are)g(merging)f(t)n(w)n(o)g(lists)i(of)f
(n)n(um)n(b)r(ers)g(ordered)f(b)n(y)h(absolute)g(v)-5
b(alue,)36 b(the)739 3070 y(stable)27 b(merge)g(op)r(eration)f
Fo(list-merge)p Black Black 913 3206 a(\(list-merge)39
b(\(lambda)i(\(x)i(y\))f(\(<)h(\(abs)f(x\))h(\(abs)f(y\)\)\))1436
3305 y('\(0)h(-2)f(4)i(8)f(-10\))f('\(-1)g(3)h(-4)g(7\)\))739
3441 y Fr(reliably)24 b(places)h(the)h(4)f(of)g(the)h(\014rst)f(list)h
(b)r(efore)f(the)h(equal-comparing)d(-4)i(of)g(the)h(second)739
3541 y(list:)p Black Black 913 3677 a Fo(\(0)43 b(-1)g(-2)g(4)g(-4)f(7)
i(8)f(-10\))739 3813 y Fr(Some)25 b(sort)g(algorithms)f
Fq(wil)t(l)29 b(not)e(work)i(c)l(orr)l(e)l(ctly)k Fr(if)26
b(giv)n(en)e(a)h Fn(\024)h Fr(when)f(they)h(exp)r(ect)g(a)f
Fc(<)739 3913 y Fr(comparison)h(\(or)h(vice-v)n(ersa\).)863
4012 y(In)h(short,)f(if)h(y)n(our)f(comparison)e(pro)r(cedure)i
Fc(f)36 b Fr(answ)n(ers)26 b(true)i(to)f Fo(\()p Fc(f)52
b Fo(x)43 b(x\))p Fr(,)27 b(then)p Black 863 4148 a Fn(\017)p
Black 41 w Fr(using)f(a)f(stable)g(sorting)f(or)h(merging)g(algorithm)f
(will)i(not)f(giv)n(e)g(y)n(ou)g(a)g(stable)g(sort)946
4248 y(or)i(merge,)p Black 863 4399 a Fn(\017)p Black
41 w Fo(list-sorted?)32 b Fr(ma)n(y)27 b(surprise)g(y)n(ou.)739
4535 y(Note)h(that)f(y)n(ou)g(can)g(syn)n(thesize)g(a)h
Fc(<)f Fr(pro)r(cedure)f(from)i(a)f Fn(\024)g Fr(pro)r(cedure)g(with)p
Black Black 913 4671 a Fo(\(lambda)41 b(\(x)i(y\))f(\(not)g(\(<=)h(y)g
(x\)\)\))739 4807 y Fr(if)28 b(need)g(b)r(e.)863 4907
y(Precise)f(de\014nitions)h(giv)n(e)f(sharp)h(edges)f(to)h(to)r(ols,)f
(but)i(require)e(care)g(in)h(use.)38 b(\\Mea-)739 5006
y(sure)27 b(t)n(wice,)g(cut)h(once.")p Black 2130 5255
a(66)p Black eop end
%%Page: 67 75
TeXDict begin 67 74 bop 0 TeXcolorgray Black Black Black
291 523 a Fm(All)21 b(v)m(ector)j(op)s(erations)d(accept)j(optional)e
(subrange)g(parameters)84 b Fr(The)19 b(v)n(ector)291
623 y(op)r(erations)28 b(sp)r(eci\014ed)i(b)r(elo)n(w)g(all)f(tak)n(e)h
(optional)f Fo(start)p Fr(/)p Fo(end)d Fr(argumen)n(ts)j(indicating)g
(a)291 722 y(selected)k(subrange)f(of)h(a)g(v)n(ector's)f(elemen)n(ts.)
55 b(If)34 b(a)f Fo(start)e Fr(parameter)h(or)h Fo(start)p
Fr(/)p Fo(end)291 822 y Fr(parameter)27 b(pair)i(is)g(giv)n(en)f(to)i
(suc)n(h)e(a)h(pro)r(cedure,)g(they)g(m)n(ust)h(b)r(e)f(exact,)h
(non-negativ)n(e)291 922 y(in)n(tegers,)c(suc)n(h)h(that)920
1121 y(0)22 b Fn(\024)h Fq(start)31 b Fn(\024)22 b Fq(end)32
b Fn(\024)23 b Fo(\(vector-length)38 b Fq(ve)l(ctor)9
b Fo(\))291 1321 y Fr(where)31 b Fq(ve)l(ctor)41 b Fr(is)32
b(the)g(related)g(v)n(ector)e(parameter.)49 b(If)32 b(not)g(sp)r
(eci\014ed,)i(they)e(default)g(to)291 1421 y(0)c(and)i(the)f(length)h
(of)f(the)g(v)n(ector,)g(resp)r(ectiv)n(ely)-7 b(.)41
b(They)29 b(are)f(in)n(terpreted)h(to)g(select)h(the)291
1521 y(range)g([)p Fq(start)7 b Fc(;)14 b Fq(end)9 b
Fr(\),)33 b(that)f(is,)g(all)g(elemen)n(ts)f(from)g(index)h
Fq(start)39 b Fr(\(inclusiv)n(e\))32 b(up)g(to,)g(but)291
1620 y(not)27 b(including,)h(index)g Fq(end)9 b Fr(.)291
1882 y Fm(Required)39 b(vs.)h(allo)m(w)m(ed)g(side-e\013ects)81
b Fo(List-sort!)54 b Fr(and)35 b Fo(List-stable-sort)o(!)291
1982 y Fr(are)29 b(allo)n(w)n(ed,)g(but)i(not)g(required,)f(to)g(alter)
f(their)i(argumen)n(ts')e(cons)g(cells)h(to)g(construct)291
2081 y(the)d(result)f(list.)37 b(This)27 b(is)g(consisten)n(t)f(with)i
(the)f(what-not-ho)n(w)e(c)n(haracter)g(of)i(the)g(group)291
2181 y(of)g(pro)r(cedures)f(to)i(whic)n(h)f(they)h(b)r(elong)f(\(the)i
Fo(sorting)c Fr(structure\).)415 2289 y(The)k Fo(list-delete-neigh)o
(bo)o(r-d)o(up)o(s!)p Fr(,)23 b Fo(list-merge!)37 b Fr(and)29
b Fo(list-merge-sort!)291 2389 y Fr(pro)r(cedures,)23
b(on)h(the)g(other)g(hand,)g(pro)n(vide)f(sp)r(eci\014c)h(algorithms,)g
(and,)g(as)g(suc)n(h,)g(explic-)291 2488 y(itly)30 b(commit)h(to)f(the)
h(use)f(of)g(side-e\013ects)g(on)g(their)h(input)g(lists)f(in)h(order)e
(to)h(guaran)n(tee)291 2588 y(their)d(k)n(ey)g(algorithmic)f(prop)r
(erties)h(\(e.g.,)h(linear-time)f(op)r(eration\).)291
2866 y Fe(5.20.2)112 b(Pro)s(cedure)37 b(sp)s(eci\014cation)p
Black Black 344 3033 a Fr(Structure)27 b(name)670 b(F)-7
b(unctionalit)n(y)p 295 3067 2858 4 v 344 3136 a Fo(sorting)925
b Fr(General)27 b(sorting)f(for)h(lists)h(and)f(v)n(ectors)344
3236 y Fo(sorted)969 b Fr(Sorted)27 b(predicates)g(for)g(lists)g(and)h
(v)n(ectors)344 3336 y Fo(list-merge-sort)573 b Fr(List)27
b(merge)g(sort)344 3435 y Fo(vector-merge-sor)o(t)486
b Fr(V)-7 b(ector)27 b(merge)g(sort)344 3535 y Fo(vector-heap-sort)529
b Fr(V)-7 b(ector)27 b(heap)g(sort)344 3634 y Fo(vector-quick-sor)o(t)
486 b Fr(V)-7 b(ector)27 b(quic)n(k)g(sort)344 3734 y
Fo(vector-quick-sor)o(t3)442 b Fr(V)-7 b(ector)27 b(quic)n(k)g(sort)g
(with)h(3-w)n(a)n(y)d(comparisons)344 3834 y Fo(vector-insert-so)o(rt)
442 b Fr(V)-7 b(ector)27 b(insertion)g(sort)344 3933
y Fo(delete-neighbor-)o(dup)o(li)o(ca)o(tes)93 b Fr(List)27
b(and)h(v)n(ector)e(delete)i(neigh)n(b)r(or)f(duplicates)344
4033 y Fo(binary-searches)573 b Fr(V)-7 b(ector)27 b(binary)g(searc)n
(h)291 4246 y(Note)e(that)h(there)g(is)g(no)f(\\list)h(insert)f(sort")f
(pac)n(k)-5 b(age,)25 b(as)g(y)n(ou)g(migh)n(t)h(as)f(w)n(ell)g(alw)n
(a)n(ys)f(use)291 4346 y(list)k(merge)g(sort.)38 b(The)28
b(reference)g(implemen)n(tation's)g(destructiv)n(e)g(list)h(merge)e
(sort)h(will)291 4446 y(do)f(few)n(er)g Fo(set-cdr!)p
Fr(s)d(than)k(a)f(destructiv)n(e)g(insert)g(sort.)291
4707 y Fm(Pro)s(cedure)45 b(naming)g(and)h(functionalit)m(y)83
b Fr(Almost)40 b(all)f(of)g(the)h(pro)r(cedures)e(de-)291
4807 y(scrib)r(ed)26 b(b)r(elo)n(w)h(are)f(v)-5 b(arian)n(ts)25
b(of)i(t)n(w)n(o)g(basic)f(op)r(erations:)35 b(sorting)26
b(and)h(merging.)35 b(These)291 4907 y(pro)r(cedures)25
b(are)g(consisten)n(tly)h(named)h(b)n(y)f(comp)r(osing)f(a)h(set)h(of)f
(basic)g(lexemes)g(to)h(indi-)291 5006 y(cate)g(what)g(they)h(do.)p
Black 1681 5255 a(67)p Black eop end
%%Page: 68 76
TeXDict begin 68 75 bop 0 TeXcolorgray Black Black Black
Black Black 838 510 a Fr(Lexeme)99 b(Meaning)p 788 543
2767 4 v 838 613 a Fo(sort)199 b Fr(The)33 b(pro)r(cedure)f(sorts)g
(its)h(input)g(data)g(set)g(b)n(y)f(some)h Fc(<)f Fr(comparison)1213
712 y(pro)r(cedure.)838 812 y Fo(merge)155 b Fr(The)18
b(pro)r(cedure)g(merges)f(t)n(w)n(o)h(ordered)f(data)h(sets)g(in)n(to)g
(a)g(single)g(ordered)1213 912 y(result.)838 1011 y Fo(stable)111
b Fr(This)27 b(lexeme)h(indicates)f(that)h(the)g(sort)f(is)g(a)h
(stable)f(one.)838 1111 y Fo(vector)111 b Fr(The)28 b(pro)r(cedure)e
(op)r(erates)h(up)r(on)h(v)n(ectors.)838 1210 y Fo(list)199
b Fr(The)28 b(pro)r(cedure)e(op)r(erates)h(up)r(on)h(lists.)838
1310 y Fo(!)331 b Fr(Pro)r(cedures)26 b(that)j(end)f(in)h
Fo(!)38 b Fr(are)27 b(allo)n(w)n(ed,)g(and)h(sometimes)g(required,)1213
1410 y(to)f(reuse)g(their)h(input)g(storage)e(to)h(construct)g(their)h
(answ)n(er.)739 1623 y Fm(T)m(yp)s(es)23 b(of)g(parameters)h(and)g
(return)f(v)-5 b(alues)83 b Fr(In)20 b(the)g(pro)r(cedures)f(sp)r
(eci\014ed)i(b)r(elo)n(w,)p Black 863 1791 a Fn(\017)p
Black 41 w Fr(A)34 b Fo(<)e Fr(or)g Fo(=)g Fr(parameter)g(is)g(a)h(pro)
r(cedure)f(accepting)g(t)n(w)n(o)g(argumen)n(ts)f(tak)n(en)i(from)946
1890 y(the)28 b(sp)r(eci\014ed)g(pro)r(cedure's)f(data)g(set\(s\),)h
(and)f(returning)g(a)g(b)r(o)r(olean;)p Black 863 2058
a Fn(\017)p Black 41 w Fo(Start)39 b Fr(and)i Fo(end)f
Fr(parameters)f(are)h(exact,)k(non-negativ)n(e)c(in)n(tegers)f(that)j
(serv)n(e)946 2157 y(as)34 b(v)n(ector)f(indices)i(selecting)f(a)g
(subrange)f(of)h(some)g(asso)r(ciated)f(v)n(ector.)56
b(When)946 2257 y(sp)r(eci\014ed,)28 b(they)g(m)n(ust)g(satisfy)f(the)h
(relation)1472 2440 y(0)23 b Fn(\024)f Fq(start)31 b
Fn(\024)22 b Fq(end)32 b Fn(\024)23 b Fo(\(vector-length)38
b Fq(ve)l(ctor)9 b Fo(\))946 2623 y Fr(where)28 b Fq(ve)l(ctor)36
b Fr(is)28 b(the)g(asso)r(ciated)e(v)n(ector.)739 2790
y(P)n(assing)33 b(v)-5 b(alues)34 b(to)h(pro)r(cedures)e(with)j(these)e
(parameters)f(that)j(do)e(not)h(satisfy)f(these)739 2890
y(t)n(yp)r(es)27 b(is)h(an)f(error.)863 2990 y(If)f(a)f(pro)r(cedure)f
(is)h(said)g(to)g(return)g(\\unsp)r(eci\014ed,")g(this)g(means)g(that)g
(nothing)g(at)h(all)739 3090 y(is)e(said)f(ab)r(out)h(what)g(the)g(pro)
r(cedure)f(returns,)h(not)g(ev)n(en)f(the)i(n)n(um)n(b)r(er)e(of)h
(return)g(v)-5 b(alues.)739 3189 y(Suc)n(h)31 b(a)f(pro)r(cedure)g(is)h
(not)f(ev)n(en)h(required)f(to)g(b)r(e)i(consisten)n(t)e(from)g(call)h
(to)f(call)h(in)g(the)739 3289 y(nature)h(or)f(n)n(um)n(b)r(er)h(of)h
(its)f(return)g(v)-5 b(alues.)51 b(It)33 b(is)f(simply)h(required)e(to)
h(return)g(a)g(v)-5 b(alue)739 3388 y(\(or)31 b(v)-5
b(alues\))32 b(that)h(ma)n(y)e(b)r(e)i(passed)e(to)h(a)g(command)g(con)
n(tin)n(uation,)g(e.g.)50 b(as)32 b(the)g(v)-5 b(alue)739
3488 y(of)35 b(an)f(expression)f(app)r(earing)h(as)g(a)g(non-terminal)g
(subform)g(of)h(a)f Fo(begin)f Fr(expression.)739 3588
y(Note)d(that)g(in)g(R)1284 3558 y Fk(5)1322 3588 y Fr(RS,)g(this)g
(restricts)f(suc)n(h)h(a)f(pro)r(cedure)g(to)h(returning)f(a)h(single)f
(v)-5 b(alue;)739 3687 y(non-R)962 3657 y Fk(5)999 3687
y Fr(RS)28 b(systems)f(ma)n(y)g(not)g(ev)n(en)g(pro)n(vide)g(this)h
(restriction.)739 3905 y Fo(sorting)p Fm(|general)h(sorting)i(pac)m(k)
-5 b(age)739 4059 y Fr(This)20 b(library)g(pro)n(vides)f(basic)h
(sorting)f(and)h(merging)g(functionalit)n(y)g(suitable)h(for)f(general)
739 4158 y(programming.)68 b(The)38 b(pro)r(cedures)g(are)f(named)i(b)n
(y)f(their)g(seman)n(tic)h(prop)r(erties,)h(i.e.,)739
4258 y(what)27 b(they)h(do)g(to)f(the)h(data)f(\(sort,)g(stable)h
(sort,)e(merge,)h(and)g(so)g(forth\).)p Black 755 4408
a Fn(\017)p Black 42 w Fo(\(list-sorted?)44 b Fc(<)d
Fq(list)8 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black
755 4508 a Fn(\017)p Black 42 w Fo(\(list-merge)36 b
Fc(<)42 b Fq(list)1574 4520 y Fk(1)1653 4508 y Fq(list)1761
4520 y Fk(2)1798 4508 y Fo(\))f Fn(!)h Fq(list)p Black
755 4608 a Fn(\017)p Black 42 w Fo(\(list-merge!)j Fc(<)c
Fq(list)1626 4620 y Fk(1)1705 4608 y Fq(list)1813 4620
y Fk(2)1850 4608 y Fo(\))g Fn(!)h Fq(list)p Black 755
4707 a Fn(\017)p Black 42 w Fo(\(list-sort)37 b Fc(<)k
Fq(lis)7 b Fo(\))42 b Fn(!)f Fq(list)p Black 755 4807
a Fn(\017)p Black 42 w Fo(\(list-sort!)k Fc(<)c Fq(lis)7
b Fo(\))42 b Fn(!)f Fq(list)p Black 755 4907 a Fn(\017)p
Black 42 w Fo(\(list-stable-so)o(rt)35 b Fc(<)41 b Fq(list)8
b Fo(\))41 b Fn(!)h Fq(list)p Black 755 5006 a Fn(\017)p
Black 42 w Fo(\(list-stable-so)o(rt)o(!)i Fc(<)d Fq(list)8
b Fo(\))41 b Fn(!)h Fq(list)p Black 2130 5255 a Fr(68)p
Black eop end
%%Page: 69 77
TeXDict begin 69 76 bop 0 TeXcolorgray Black Black Black
Black 307 523 a Fn(\017)p Black 41 w Fo(\(list-delete-neig)o(hb)o(or-)o
(du)o(ps)35 b Fr(=)41 b Fq(list)8 b Fo(\))41 b Fn(!)h
Fq(list)p Black 307 623 a Fn(\017)p Black 41 w Fo(\(vector-sorted?)i
Fc(<)d Fq(v)h([start)f([end]])9 b Fo(\))43 b Fn(!)e Fq(b)l(o)l(ole)l
(an)p Black 307 722 a Fn(\017)p Black 41 w Fo(\(vector-merge)36
b Fc(<)41 b Fq(v)1142 734 y Fk(1)1221 722 y Fq(v)1259
734 y Fk(2)1338 722 y Fq([start)p Fr(1)g Fq([end)p Fr(1)h
Fq([start)p Fr(2)f Fq([end)p Fr(2)p Fq(]]]])9 b Fo(\))43
b Fn(!)f Fq(ve)l(ctor)p Black 307 822 a Fn(\017)p Black
41 w Fo(\(vector-merge!)36 b Fc(<)41 b Fq(v)h(v)1266
834 y Fk(1)1345 822 y Fq(v)1383 834 y Fk(2)1462 822 y
Fq([start)f([start)p Fr(1)g Fq([end)p Fr(1)h Fq([start)p
Fr(2)f Fq([end)p Fr(2)p Fq(]]]]])9 b Fo(\))p Black 307
922 a Fn(\017)p Black 41 w Fo(\(vector-sort)37 b Fc(<)k
Fq(v)h([start)f([end]])9 b Fo(\))43 b Fn(!)e Fq(ve)l(ctor)p
Black 307 1021 a Fn(\017)p Black 41 w Fo(\(vector-sort!)36
b Fc(<)41 b Fq(v)h([start)g([end]])9 b Fo(\))p Black
307 1121 a Fn(\017)p Black 41 w Fo(\(vector-stable-so)o(rt)35
b Fc(<)41 b Fq(v)h([start)f([end]])9 b Fo(\))43 b Fn(!)e
Fq(ve)l(ctor)p Black 307 1220 a Fn(\017)p Black 41 w
Fo(\(vector-stable-so)o(rt)o(!)35 b Fc(<)42 b Fq(v)f([start)h([end]])9
b Fo(\))p Black 307 1320 a Fn(\017)p Black 41 w Fo(\(vector-delete-ne)o
(ig)o(hbo)o(r-)o(du)o(ps)35 b Fr(=)41 b Fq(v)h([start)f([end]])9
b Fo(\))43 b Fn(!)e Fq(ve)l(ctor)p Black Black 678 1502
a Fr(Pro)r(cedure)979 b(Suggested)26 b(algorithm)p 628
1535 2189 4 v 678 1605 a Fo(list-sort)953 b Fr(v)n(ector)26
b(heap)h(or)g(quic)n(k)678 1705 y Fo(list-sort!)909 b
Fr(list)27 b(merge)g(sort)678 1804 y Fo(list-stable-sort)645
b Fr(v)n(ector)26 b(merge)h(sort)678 1904 y Fo(list-stable-sort!)601
b Fr(list)27 b(merge)g(sort)678 2003 y Fo(vector-sort)865
b Fr(heap)27 b(or)g(quic)n(k)g(sort)678 2103 y Fo(vector-sort!)821
b Fr(heap)27 b(or)g(quic)n(k)g(sort)678 2203 y Fo(vector-stable-sor)o
(t)558 b Fr(v)n(ector)26 b(merge)h(sort)678 2302 y Fo
(vector-stable-sor)o(t!)j Fr(merge)d(sort)291 2481 y
Fo(List-Sorted?)36 b Fr(and)29 b Fo(vector-sorted?)36
b Fr(return)29 b(true)g(if)h(their)f(input)h(list)g(or)e(v)n(ector)g
(is)291 2581 y(in)f(sorted)g(order,)f(as)h(determined)h(b)n(y)g(their)f
Fc(<)g Fr(comparison)f(parameter.)415 2681 y(All)34 b(four)g(merge)e
(op)r(erations)h(are)f(stable:)49 b(an)33 b(elemen)n(t)h(of)g(the)g
(initial)g(list)g Fq(list)3010 2693 y Fk(1)3081 2681
y Fr(or)291 2780 y(v)n(ector)c Fq(ve)l(ctor)759 2792
y Fk(1)829 2780 y Fr(will)j(come)e(b)r(efore)h(an)g(equal-comparing)e
(elemen)n(t)i(in)h(the)f(second)g(list)291 2880 y Fq(list)399
2892 y Fk(2)464 2880 y Fr(or)26 b(v)n(ector)h Fq(ve)l(ctor)1030
2892 y Fk(2)1095 2880 y Fr(in)h(the)g(result.)415 2980
y(The)g(pro)r(cedures)p Black 415 3146 a Fn(\017)p Black
41 w Fo(list-merge)p Black 415 3312 a Fn(\017)p Black
41 w Fo(list-sort)p Black 415 3478 a Fn(\017)p Black
41 w Fo(list-stable-sort)p Black 415 3644 a Fn(\017)p
Black 41 w Fo(list-delete-neigh)o(bo)o(r-)o(dup)o(s)291
3810 y Fr(do)21 b(not)h(alter)g(their)g(inputs)g(and)g(are)f(allo)n(w)n
(ed)g(to)h(return)f(a)h(v)-5 b(alue)22 b(that)g(shares)f(a)g(common)291
3910 y(tail)27 b(with)h(a)f(list)h(argumen)n(t.)415 4010
y(The)g(pro)r(cedure)p Black 415 4176 a Fn(\017)p Black
41 w Fo(list-sort!)p Black 415 4342 a Fn(\017)p Black
41 w Fo(list-stable-sort!)291 4508 y Fr(are)f(\\linear)g(up)r(date")h
(op)r(erators|they)e(are)h(allo)n(w)n(ed,)g(but)i(not)f(required,)g(to)
g(alter)g(the)291 4608 y(cons)f(cells)g(of)g(their)h(argumen)n(ts)e(to)
i(pro)r(duce)f(their)g(results.)415 4707 y(On)19 b(the)h(other)f(hand,)
j(the)e Fo(list-merge!)29 b Fr(pro)r(cedure)19 b(mak)n(e)g(only)g(a)g
(single,)i(iterativ)n(e,)291 4807 y(linear-time)30 b(pass)h(o)n(v)n(er)
e(its)j(argumen)n(t)e(list,)j(using)f Fo(set-cdr!)p Fr(s)c(to)j
(rearrange)d(the)k(cells)291 4907 y(of)40 b(the)g(list)g(in)n(to)g(the)
h(\014nal)f(result)f(|it)i(w)n(orks)d(\\in)i(place.")74
b(Hence,)43 b(an)n(y)c(cons)h(cell)291 5006 y(app)r(earing)29
b(in)h(the)h(result)f(m)n(ust)g(ha)n(v)n(e)f(originally)g(app)r(eared)g
(in)i(an)f(input.)45 b(The)31 b(in)n(ten)n(t)p Black
1681 5255 a(69)p Black eop end
%%Page: 70 78
TeXDict begin 70 77 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(of)31 b(this)h(iterativ)n(e-algorithm)d(commitmen)n(t)j
(is)g(to)f(allo)n(w)f(the)i(programmer)e(to)h(b)r(e)h(sure)739
623 y(that)i(if,)j(for)c(example,)j Fo(list-merge!)52
b Fr(is)34 b(ask)n(ed)f(to)h(merge)f(t)n(w)n(o)g(ten-million-elemen)n
(t)739 722 y(lists,)27 b(the)h(op)r(eration)f(will)g(complete)h
(without)g(p)r(erforming)f(some)f(extremely)h(\(p)r(ossibly)739
822 y(t)n(w)n(en)n(t)n(y-million\))g(deep)g(recursion.)863
922 y(The)h(v)n(ector)e(pro)r(cedures)p Black 863 1089
a Fn(\017)p Black 41 w Fo(vector-sort)p Black 863 1256
a Fn(\017)p Black 41 w Fo(vector-stable-sor)o(t)p Black
863 1424 a Fn(\017)p Black 41 w Fo(vector-delete-nei)o(ghb)o(or)o(-du)o
(ps)739 1591 y Fr(do)31 b(not)g(alter)g(their)g(inputs,)h(but)g(allo)r
(cate)f(a)f(fresh)h(v)n(ector)f(for)h(their)g(result,)h(of)f(length)739
1691 y Fq(end)c Fn(\000)18 b Fq(start)8 b Fr(.)863 1791
y(The)28 b(v)n(ector)e(pro)r(cedures)p Black 863 1958
a Fn(\017)p Black 41 w Fo(vector-sort!)p Black 863 2125
a Fn(\017)p Black 41 w Fo(vector-stable-sor)o(t!)739
2292 y Fr(sort)33 b(their)h(data)f(in-place.)56 b(\(But)34
b(note)g(that)h Fo(vector-stable-s)o(ort)o(!)50 b Fr(ma)n(y)33
b(allo)r(cate)739 2392 y(temp)r(orary)26 b(storage)g(prop)r(ortional)g
(to)h(the)h(size)f(of)h(the)g(input)g(.\))863 2492 y
Fo(Vector-merge)23 b Fr(returns)k(a)g(v)n(ector)g(of)g(length)h(\()p
Fq(end)2527 2504 y Fk(1)2583 2492 y Fn(\000)18 b Fq(start)2833
2504 y Fk(1)2888 2492 y Fr(+)g(\()p Fq(end)3130 2504
y Fk(2)3187 2492 y Fn(\000)g Fq(start)3437 2504 y Fk(2)3473
2492 y Fr(\).)863 2592 y Fo(Vector-merge!)32 b Fr(writes)27
b(its)g(result)h(in)n(to)f(v)n(ector)f Fq(v)9 b Fr(,)28
b(b)r(eginning)f(at)g(index)h Fq(start)7 b Fr(,)28 b(for)739
2691 y(indices)c(less)g(than)g Fq(end)32 b Fr(=)22 b
Fq(start)d Fr(+)11 b(\()p Fq(end)2015 2703 y Fk(1)2064
2691 y Fn(\000)g Fq(start)2307 2703 y Fk(1)2344 2691
y Fr(\))g(+)g(\()p Fq(end)2622 2703 y Fk(2)2671 2691
y Fn(\000)g Fq(start)2914 2703 y Fk(2)2951 2691 y Fr(\).)36
b(The)24 b(target)f(sub-)739 2791 y(v)n(ector)d Fq(v)9
b Fr([)p Fq(start)e Fc(;)14 b Fq(end)9 b Fr(\))21 b(ma)n(y)f(not)h(o)n
(v)n(erlap)e(either)i(source)f(sub)n(v)n(ector)f Fq(ve)l(ctor)3105
2803 y Fk(1)3143 2791 y Fr([)p Fq(start)3333 2803 y Fk(1)3369
2791 y Fc(;)14 b Fq(end)3533 2803 y Fk(1)3571 2791 y
Fr(\))739 2891 y Fq(ve)l(ctor)954 2903 y Fk(2)991 2891
y Fr([)p Fq(start)1181 2903 y Fk(2)1218 2891 y Fc(;)g
Fq(end)1382 2903 y Fk(2)1420 2891 y Fr(\).)863 2991 y(The)26
b Fo(...-delete-neig)o(hbo)o(r-)o(du)o(ps-)o(..)o(.)k
Fr(pro)r(cedures:)k(These)25 b(pro)r(cedures)f(delete)739
3090 y(adjacen)n(t)41 b(duplicate)h(elemen)n(ts)g(from)g(a)f(list)h(or)
f(a)h(v)n(ector,)i(using)e(a)f(giv)n(en)g(elemen)n(t-)739
3190 y(equalit)n(y)36 b(pro)r(cedure.)64 b(The)37 b(\014rst/leftmost)g
(elemen)n(t)g(of)g(a)f(run)h(of)g(equal)g(elemen)n(ts)f(is)739
3289 y(the)28 b(one)f(that)h(surviv)n(es.)35 b(The)28
b(list)g(or)f(v)n(ector)f(is)h(not)h(otherwise)f(disordered.)863
3389 y(These)19 b(pro)r(cedures)e(are)g(linear)h(time|m)n(uc)n(h)g
(faster)g(than)h(the)f Fc(O)r Fr(\()p Fc(n)2996 3359
y Fk(2)3034 3389 y Fr(\))h(general)e(duplicate-)739 3489
y(elemen)n(t)32 b(deletors)f(that)h(do)f(not)h(assume)f(an)n(y)g
(\\bunc)n(hing")g(of)g(elemen)n(ts)h(\(suc)n(h)g(as)f(the)739
3589 y(ones)23 b(pro)n(vided)f(b)n(y)h(SRFI)h(1\).)36
b(If)24 b(y)n(ou)e(w)n(an)n(t)h(to)h(delete)f(duplicate)h(elemen)n(ts)f
(from)h(a)f(large)739 3688 y(list)j(or)f(v)n(ector,)g(y)n(ou)g(can)h
(sort)f(the)i(elemen)n(ts)e(to)h(bring)g(equal)f(items)h(together,)g
(then)g(use)739 3788 y(one)h(of)h(these)f(pro)r(cedures,)g(for)g(a)g
(total)g(time)h(of)g Fc(O)r Fr(\()p Fc(n)14 b Fr(log)q(\()p
Fc(n)p Fr(\)\).)863 3888 y(The)32 b(comparison)f(pro)r(cedure)g(=)g
(passed)h(to)g(these)g(pro)r(cedures)e(is)i(alw)n(a)n(ys)e(applied)739
3987 y Fo(\()p Fr(=)43 b Fc(x)h(y)s Fo(\))27 b Fr(where)g
Fc(x)h Fr(comes)f(b)r(efore)g Fc(y)j Fr(in)e(the)g(con)n(taining)f
(list)h(or)e(v)n(ector.)p Black 863 4172 a Fn(\017)p
Black 41 w Fo(List-delete-neigh)o(bor)o(-d)o(ups)17 b
Fr(do)r(es)24 b(not)g(alter)f(its)h(input)h(list;)g(its)f(answ)n(er)f
(ma)n(y)946 4271 y(share)k(storage)f(with)i(the)g(input)g(list.)p
Black 863 4439 a Fn(\017)p Black 41 w Fo(Vector-delete-nei)o(ghb)o(or)o
(-du)o(ps)13 b Fr(do)r(es)20 b(not)g(alter)f(its)h(input)h(v)n(ector,)f
(but)g(rather)946 4538 y(allo)r(cates)27 b(a)g(fresh)g(v)n(ector)g(to)g
(hold)h(the)g(result.)739 4722 y(Examples:)p Black Black
739 4907 a Fo(\(list-delete-nei)o(gh)o(bor)o(-d)o(ups)37
b(=)43 b('\(1)f(1)h(2)h(7)f(7)g(7)g(0)g(-2)g(-2\)\))826
5006 y Fr(=)-14 b Fn(\))43 b Fo(\(1)g(2)g(7)h(0)f(-2\))p
Black 2130 5255 a Fr(70)p Black eop end
%%Page: 71 79
TeXDict begin 71 78 bop 0 TeXcolorgray Black Black Black
291 623 a Fo(\(vector-delete-)o(nei)o(gh)o(bo)o(r-d)o(up)o(s)38
b(=)43 b('#\(1)f(1)h(2)g(7)g(7)g(7)h(0)f(-2)f(-2\)\))378
722 y Fr(=)-15 b Fn(\))44 b Fo(#\(1)e(2)i(7)f(0)g(-2\))291
922 y(\(vector-delete-)o(nei)o(gh)o(bo)o(r-d)o(up)o(s)38
b(=)43 b('#\(1)f(1)h(2)g(7)g(7)g(7)h(0)f(-2)f(-2\))h(3)g(7\))378
1021 y Fr(=)-15 b Fn(\))44 b Fo(#\(7)e(0)i(-2\))291 1243
y Fm(Algorithm-sp)s(eci\014c)30 b(sorting)g(pac)m(k)-5
b(ages)291 1398 y Fr(These)23 b(pac)n(k)-5 b(ages)21
b(pro)n(vide)h(more)h(sp)r(eci\014c)h(sorting)e(functionalit)n(y)-7
b(,)24 b(that)g(is,)g(sp)r(eci\014c)g(com-)291 1498 y(mitmen)n(t)30
b(to)f(particular)f(algorithms)g(that)h(ha)n(v)n(e)f(particular)g
(pragmatic)g(consequences)291 1598 y(\(suc)n(h)g(as)g(memory)g(lo)r
(calit)n(y)-7 b(,)29 b(asymptotic)f(running)g(time\))i(b)r(ey)n(ond)e
(their)h(seman)n(tic)f(b)r(e-)291 1697 y(ha)n(viour)f(\(sorting,)i
(stable)h(sorting,)e(merging,)h(etc.\).)43 b(Programmers)26
b(that)k(need)f(a)g(par-)291 1797 y(ticular)e(algorithm)f(can)h(use)h
(one)f(of)h(these)f(pac)n(k)-5 b(ages.)291 2019 y Fo(sorted)p
Fm(|sorted)29 b(predicates)p Black 307 2188 a Fn(\017)p
Black 41 w Fo(\(list-sorted?)45 b Fc(<)c Fq(list)8 b
Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2288
a Fn(\017)p Black 41 w Fo(\(vector-sorted?)i Fc(<)d Fq(ve)l(ctor)9
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2388
a Fn(\017)p Black 41 w Fo(\(vector-sorted?)i Fc(<)d Fq(ve)l(ctor)h
(start)8 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)p Black
307 2487 a Fn(\017)p Black 41 w Fo(\(vector-sorted?)i
Fc(<)d Fq(ve)l(ctor)h(start)f(end)9 b Fo(\))41 b Fn(!)h
Fq(b)l(o)l(ole)l(an)415 2657 y Fr(Return)30 b Fo(#f)f
Fr(i\013)h(there)f(is)h(an)f(adjacen)n(t)g(pair)g Fc(:)14
b(:)g(:)g(x;)g(y)j(:)d(:)g(:)29 b Fr(in)h(the)g(input)h(list)e(or)g(v)n
(ector)291 2756 y(suc)n(h)18 b(that)g Fc(y)26 b(<)d(x)p
Fr(.)34 b(The)18 b(optional)g Fq(start)7 b Fr(/)p Fq(end)27
b Fr(range)17 b(argumen)n(ts)g(restrict)h Fo(vector-sorted?)291
2856 y Fr(to)27 b(the)h(indicated)g(sub)n(v)n(ector.)291
3078 y Fo(list-merge-sort)o Fm(|list)d(merge)31 b(sort)p
Black 307 3247 a Fn(\017)p Black 41 w Fo(\(list-merge-sort)k
Fc(<)41 b Fq(list)8 b Fo(\))41 b Fn(!)h Fq(list)p Black
307 3347 a Fn(\017)p Black 41 w Fo(\(list-merge-sort!)h
Fc(<)e Fq(list)8 b Fo(\))41 b Fn(!)h Fq(list)p Black
307 3447 a Fn(\017)p Black 41 w Fo(\(list-merge)37 b
Fq(list)1019 3459 y Fk(1)1098 3447 y Fc(<)k Fq(list)1312
3459 y Fk(2)1350 3447 y Fo(\))g Fn(!)g Fq(list)p Black
307 3546 a Fn(\017)p Black 41 w Fo(\(list-merge!)k Fq(list)1071
3558 y Fk(1)1150 3546 y Fc(<)c Fq(list)1364 3558 y Fk(2)1402
3546 y Fo(\))g Fn(!)g Fq(list)291 3716 y Fr(The)22 b(sort)f(pro)r
(cedures)f(sort)h(their)h(data)g(using)f(a)h(list)g(merge)f(sort,)h
(whic)n(h)g(is)g(stable.)35 b(\(The)291 3815 y(reference)d(implemen)n
(tation)i(is,)h(additionally)-7 b(,)34 b(a)f(\\natural")f(sort.)54
b(See)33 b(b)r(elo)n(w)h(for)f(the)291 3915 y(prop)r(erties)26
b(of)i(this)g(algorithm.\))415 4016 y(The)22 b Fo(!)34
b Fr(pro)r(cedures)21 b(are)g(destructiv)n(e|they)g(use)g
Fo(set-cdr!)p Fr(s)e(to)i(rearrange)e(the)j(cells)291
4116 y(of)28 b(the)g(lists)g(in)n(to)g(the)h(prop)r(er)e(order.)38
b(As)28 b(suc)n(h,)g(they)g(do)g(not)h(allo)r(cate)e(an)n(y)g(extra)h
(cons)291 4215 y(cells|they)f(are)g(\\in)g(place")g(sorts.)415
4316 y(The)36 b(merge)g(op)r(erations)f(are)g(stable:)54
b(an)36 b(elemen)n(t)h(of)f Fq(list)2349 4328 y Fk(1)2423
4316 y Fr(will)g(come)g(b)r(efore)g(an)291 4416 y(equal-comparing)25
b(elemen)n(t)j(in)f Fq(list)1427 4428 y Fk(2)1492 4416
y Fr(in)h(the)g(result)g(list.)291 4637 y Fo(vector-merge-so)o(rt)p
Fm(|v)m(ector)f(merge)k(sort)p Black 307 4807 a Fn(\017)p
Black 41 w Fo(\(vector-merge-sor)o(t)k Fc(<)41 b Fq(ve)l(ctor)h([start)
g([end)g([temp]]])9 b Fo(\))43 b Fn(!)e Fq(ve)l(ctor)p
Black 307 4907 a Fn(\017)p Black 41 w Fo(\(vector-merge-sor)o(t!)35
b Fc(<)41 b Fq(ve)l(ctor)h([start)f([end)i([temp]]])9
b Fo(\))p Black 307 5006 a Fn(\017)p Black 41 w Fo(\(vector-merge)36
b Fc(<)41 b Fq(ve)l(ctor)1319 5018 y Fk(1)1399 5006 y
Fq(ve)l(ctor)1614 5018 y Fk(2)1693 5006 y Fq([start)1885
5018 y Fk(1)1963 5006 y Fq([end)2115 5018 y Fk(1)2195
5006 y Fq([start)2387 5018 y Fk(2)2466 5006 y Fq([end)2618
5018 y Fk(2)2656 5006 y Fq(]]]])9 b Fo(\))42 b Fn(!)g
Fq(ve)l(ctor)p Black 1681 5255 a Fr(71)p Black eop end
%%Page: 72 80
TeXDict begin 72 79 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(vector-merge!)35
b Fc(<)41 b Fq(ve)l(ctor)h(ve)l(ctor)2068 535 y Fk(1)2147
523 y Fq(ve)l(ctor)2362 535 y Fk(2)2441 523 y Fq([start)g([start)2867
535 y Fk(1)2946 523 y Fq([end)3098 535 y Fk(1)3177 523
y Fq([start)3369 535 y Fk(2)3448 523 y Fq([end)3600 535
y Fk(2)3638 523 y Fq(]]]]])9 b Fo(\))739 690 y Fr(The)35
b(sort)g(pro)r(cedures)f(sort)h(their)g(data)g(using)g(v)n(ector)g
(merge)f(sort,)j(whic)n(h)e(is)g(stable.)739 790 y(\(The)29
b(reference)f(implemen)n(tation)h(is,)g(additionally)-7
b(,)28 b(a)g(\\natural")f(sort.)40 b(See)28 b(b)r(elo)n(w)h(for)739
889 y(the)f(prop)r(erties)f(of)g(this)h(algorithm.\))863
989 y(The)42 b(optional)e Fq(start)8 b Fr(/)p Fq(end)50
b Fr(argumen)n(ts)40 b(pro)n(vide)g(for)h(sorting)f(of)h(subranges,)i
(and)739 1089 y(default)28 b(to)f(0)h(and)f(the)h(length)g(of)f(the)h
(corresp)r(onding)e(v)n(ector.)863 1189 y(Merge-sorting)20
b(a)h(v)n(ector)g(requires)g(the)h(allo)r(cation)f(of)h(a)f(temp)r
(orary)g(\\scratc)n(h")f(w)n(ork)739 1288 y(v)n(ector)26
b(for)g(the)i(duration)e(of)h(the)g(sort.)36 b(This)27
b(scratc)n(h)f(v)n(ector)g(can)g(b)r(e)i(passed)e(in)h(b)n(y)g(the)739
1388 y(clien)n(t)h(as)f(the)i(optional)e Fq(temp)33 b
Fr(argumen)n(t;)27 b(if)i(so,)e(the)h(supplied)h(v)n(ector)d(m)n(ust)i
(b)r(e)h(of)f(size)739 1488 y Fn(\024)k Fq(end)8 b Fr(,)35
b(and)e(will)g(not)g(b)r(e)g(altered)g(outside)f(the)i(range)d
([start,end\).)53 b(If)34 b(not)f(supplied,)739 1587
y(the)28 b(sort)f(routines)g(allo)r(cate)f(one)h(themselv)n(es.)863
1687 y(The)i(merge)e(op)r(erations)f(are)i(stable:)37
b(an)28 b(elemen)n(t)g(of)g Fq(ve)l(ctor)2830 1699 y
Fk(1)2896 1687 y Fr(will)g(come)g(b)r(efore)g(an)739
1787 y(equal-comparing)d(elemen)n(t)j(in)g Fq(ve)l(ctor)1983
1799 y Fk(2)2048 1787 y Fr(in)g(the)g(result)f(v)n(ector.)p
Black 863 1971 a Fn(\017)p Black 41 w Fo(Vector-merge-sort)o(!)k
Fr(lea)n(v)n(es)26 b(its)i(result)f(in)h Fq(ve)l(ctor)9
b Fr([)p Fq(start)f Fc(;)14 b Fq(end)8 b Fr(\).)p Black
863 2138 a Fn(\017)p Black 41 w Fo(Vector-merge-sort)21
b Fr(returns)27 b(a)g(v)n(ector)f(of)i(length)g Fq(end)f
Fn(\000)18 b Fq(start)7 b Fr(.)p Black 863 2305 a Fn(\017)p
Black 41 w Fo(Vector-merge)21 b Fr(returns)k(a)f(v)n(ector)g(of)i
(length)f(\()p Fq(end)2596 2317 y Fk(1)2648 2305 y Fn(\000)13
b Fq(start)2893 2317 y Fk(1)2930 2305 y Fr(\))h(+)g(\()p
Fq(end)3214 2317 y Fk(2)3266 2305 y Fn(\000)f Fq(start)3511
2317 y Fk(2)3548 2305 y Fr(\).)p Black 863 2473 a Fn(\017)p
Black 41 w Fo(Vector-merge!)31 b Fr(writes)26 b(its)h(result)e(in)n(to)
h Fq(ve)l(ctor)10 b Fr(,)26 b(b)r(eginning)g(at)g(index)h
Fq(start)7 b Fr(,)27 b(for)946 2572 y(indices)c(less)f(than)h
Fq(end)32 b Fr(=)22 b Fq(start)16 b Fr(+)8 b(\()p Fq(end)2212
2584 y Fk(1)2258 2572 y Fn(\000)g Fq(start)2498 2584
y Fk(1)2535 2572 y Fr(\))g(+)g(\()p Fq(end)2807 2584
y Fk(2)2853 2572 y Fn(\000)g Fq(start)3093 2584 y Fk(2)3130
2572 y Fr(\).)36 b(The)22 b(target)946 2672 y(sub)n(v)n(ector)1961
2772 y Fq(ve)l(ctor)10 b Fr([)p Fq(start)d Fc(;)14 b
Fq(end)9 b Fr(\))946 2923 y(ma)n(y)27 b(not)h(o)n(v)n(erlap)d(either)j
(source)e(sub)n(v)n(ector)1467 3106 y Fq(ve)l(ctor)1682
3118 y Fk(1)1720 3106 y Fr([)p Fq(start)1910 3118 y Fk(1)1946
3106 y Fc(;)14 b Fq(end)2110 3118 y Fk(1)2148 3106 y
Fr(\))p Fc(;)42 b Fr(or)26 b Fq(ve)l(ctor)2561 3118 y
Fk(2)2599 3106 y Fr([)p Fq(start)2789 3118 y Fk(2)2826
3106 y Fc(;)14 b Fq(end)2990 3118 y Fk(2)3027 3106 y
Fr(\))p Fc(:)739 3323 y Fo(vector-heap-sort)o Fm(|v)m(ector)28
b(heap)k(sort)p Black 755 3490 a Fn(\017)p Black 42 w
Fo(\(vector-heap-so)o(rt)j Fc(<)41 b Fq(ve)l(ctor)h([start)f([end]])9
b Fo(\))43 b Fn(!)f Fq(ve)l(ctor)p Black 755 3590 a Fn(\017)p
Black 42 w Fo(\(vector-heap-so)o(rt)o(!)36 b Fc(<)41
b Fq(ve)l(ctor)h([start)f([end]])9 b Fo(\))739 3757 y
Fr(These)29 b(pro)r(cedures)e(sort)h(their)h(data)g(using)f(heap)h
(sort,)g(whic)n(h)f(is)h(not)g(a)g(stable)f(sorting)739
3856 y(algorithm.)863 3956 y Fo(Vector-heap-sort)12 b
Fr(returns)18 b(a)g(v)n(ector)f(of)h(length)h Fq(end)9
b Fn(\000)p Fq(start)e Fr(.)33 b Fo(Vector-heap-sort!)739
4056 y Fr(is)27 b(in-place,)g(lea)n(ving)g(its)h(result)f(in)h
Fq(ve)l(ctor)9 b Fr([)p Fq(start)f Fc(;)14 b Fq(end)8
b Fr(\).)739 4273 y Fo(vector-quick-sor)o(t)p Fm(|v)m(ector)27
b(quic)m(k)33 b(sort)p Black 755 4440 a Fn(\017)p Black
42 w Fo(\(vector-quick-s)o(or)o(t)j Fc(<)41 b Fq(ve)l(ctor)h([start)f
([end]])9 b Fo(\))43 b Fn(!)e Fq(ve)l(ctor)p Black 755
4540 a Fn(\017)p Black 42 w Fo(\(vector-quick-s)o(or)o(t!)35
b Fc(<)41 b Fq(ve)l(ctor)h([start)g([end]])9 b Fo(\))739
4707 y Fr(These)27 b(pro)r(cedures)f(sort)h(their)g(data)g(using)g
(quic)n(k)g(sort,)f(whic)n(h)i(is)f(not)g(a)g(stable)g(sorting)739
4807 y(algorithm.)863 4907 y Fo(Vector-quick-sort)12
b Fr(returns)18 b(a)f(v)n(ector)h(of)g(length)g Fq(end)9
b Fn(\000)p Fq(start)e Fr(.)34 b Fo(Vector-quick-sor)o(t!)739
5006 y Fr(is)27 b(in-place,)g(lea)n(ving)g(its)h(result)f(in)h
Fq(ve)l(ctor)9 b Fr([)p Fq(start)f Fc(;)14 b Fq(end)8
b Fr(\).)p Black 2130 5255 a(72)p Black eop end
%%Page: 73 81
TeXDict begin 73 80 bop 0 TeXcolorgray Black Black Black
291 523 a Fo(vector-quick-so)o(rt3)o Fm(|v)m(ector)28
b(quic)m(k)k(sort)g(with)g(3-w)m(a)m(y)g(comparisons)p
Black 307 672 a Fn(\017)p Black 41 w Fo(\(vector-quick-sor)o(t3)j
Fq(c)l(omp)42 b(ve)l(ctor)g([start)f([end]])9 b Fo(\))43
b Fn(!)e Fq(ve)l(ctor)p Black 307 771 a Fn(\017)p Black
41 w Fo(\(vector-quick-sor)o(t3)o(!)35 b Fq(c)l(omp)43
b(ve)l(ctor)f([start)f([end]])9 b Fo(\))291 920 y Fr(These)27
b(pro)r(cedures)f(sort)g(their)i(data)f(using)g(quic)n(k)f(sort,)h
(whic)n(h)g(is)h(not)f(a)g(stable)g(sorting)291 1019
y(algorithm.)415 1119 y Fo(Vector-quick-sor)o(t3)12 b
Fr(returns)18 b(a)g(v)n(ector)f(of)h(length)h Fq(end)8
b Fn(\000)p Fq(start)f Fr(.)34 b Fo(Vector-quick-sort)o(3!)291
1219 y Fr(is)27 b(in-place,)g(lea)n(ving)g(its)g(result)h(in)f
Fq(ve)l(ctor)10 b Fr([)p Fq(start)d Fc(;)14 b Fq(end)9
b Fr(\).)415 1318 y(These)30 b(pro)r(cedures)f(implemen)n(t)i(a)f(v)-5
b(arian)n(t)29 b(of)h(quic)n(k-sort)f(that)i(tak)n(es)e(a)h(three-w)n
(a)n(y)291 1418 y(comparison)d(pro)r(cedure)i Fc(C)6
b Fr(.)43 b Fc(C)36 b Fr(compares)28 b(a)h(pair)g(of)g(elemen)n(ts)h
(and)f(returns)g(an)g(exact)291 1518 y(in)n(teger)d(whose)h(sign)g
(indicates)h(their)f(relationship:)1311 1678 y(\()p Fc(C)6
b(xy)s Fr(\))24 b Fc(<)e Fr(0)83 b Fn(\))g Fc(x)23 b(<)g(y)1311
1803 y Fr(\()p Fc(C)6 b(xy)s Fr(\))24 b(=)e(0)83 b Fn(\))g
Fc(x)23 b Fr(=)g Fc(y)1311 1927 y Fr(\()p Fc(C)6 b(xy)s
Fr(\))24 b Fc(>)e Fr(0)83 b Fn(\))g Fc(x)23 b(>)g(y)415
2088 y Fr(T)-7 b(o)33 b(help)i(remem)n(b)r(er)e(the)h(relationship)f(b)
r(et)n(w)n(een)g(the)h(sign)g(of)f(the)h(result)g(and)g(the)291
2188 y(relation,)24 b(use)h(the)h(pro)r(cedure)e Fn(\000)h
Fr(as)f(the)h(mo)r(del)h(for)e Fc(C)6 b Fr(:)36 b(\()p
Fn(\000)p Fc(xy)s Fr(\))24 b Fc(<)e Fr(0)j(means)g(that)g
Fc(x)e(<)g(y)s Fr(;)291 2287 y(\()p Fn(\000)p Fc(xy)s
Fr(\))g Fc(>)g Fr(0)k(means)g(that)h Fc(x)23 b(>)g(y)s
Fr(.)291 2499 y Fo(vector-insert-s)o(ort)o Fm(|v)m(ector)28
b(insertion)i(sort)p Black 307 2648 a Fn(\017)p Black
41 w Fo(\(vector-insert-so)o(rt)35 b Fc(<)41 b Fq(ve)l(ctor)h([start)f
([end]])9 b Fo(\))43 b Fn(!)e Fq(ve)l(ctor)p Black 307
2748 a Fn(\017)p Black 41 w Fo(\(vector-insert-so)o(rt)o(!)35
b Fc(<)42 b Fq(ve)l(ctor)f([start)h([end]])9 b Fo(\))291
2896 y Fr(These)27 b(pro)r(cedures)f(stably)h(sort)g(their)h(data)f
(using)g(insertion)g(sort.)p Black 415 3045 a Fn(\017)p
Black 41 w Fo(Vector-insert-sor)o(t)21 b Fr(returns)27
b(a)g(v)n(ector)g(of)g(length)h Fq(end)f Fn(\000)18 b
Fq(start)8 b Fr(.)p Black 415 3202 a Fn(\017)p Black
41 w Fo(Vector-insert-sor)o(t!)30 b Fr(is)e(in-place,)f(lea)n(ving)f
(its)i(result)f(in)h Fq(ve)l(ctor)9 b Fr([)p Fq(start)f
Fc(;)14 b Fq(end)9 b Fr(\).)291 3414 y Fo(delete-neighbor)o(-du)o(pl)o
(ic)o(ate)o(s)p Fm(|li)o(st)42 b(and)49 b(v)m(ector)g(delete)e(neigh)m
(b)s(or)h(dupli-)291 3514 y(cates)p Black 307 3662 a
Fn(\017)p Black 41 w Fo(\(list-delete-neig)o(hb)o(or-)o(du)o(ps)35
b Fr(=)41 b Fq(list)8 b Fo(\))41 b Fn(!)h Fq(list)p Black
307 3762 a Fn(\017)p Black 41 w Fo(\(list-delete-neig)o(hb)o(or-)o(du)o
(ps)o(!)i Fr(=)d Fq(list)8 b Fo(\))41 b Fn(!)h Fq(list)p
Black 307 3861 a Fn(\017)p Black 41 w Fo(\(vector-delete-ne)o(ig)o(hbo)
o(r-)o(du)o(ps)35 b Fr(=)41 b Fq(ve)l(ctor)h([start)g([end]])9
b Fo(\))42 b Fn(!)g Fq(ve)l(ctor)p Black 307 3961 a Fn(\017)p
Black 41 w Fo(\(vector-delete-ne)o(ig)o(hbo)o(r-)o(du)o(ps!)h
Fr(=)e Fq(ve)l(ctor)h([start)g([end]])9 b Fo(\))42 b
Fn(!)g Fq(end)2850 3931 y Fd(0)291 4110 y Fr(These)37
b(pro)r(cedures)g(delete)h(adjacen)n(t)g(duplicate)g(elemen)n(ts)g
(from)g(a)f(list)h(or)g(a)f(v)n(ector,)291 4209 y(using)23
b(a)g(giv)n(en)f(elemen)n(t-equalit)n(y)g(pro)r(cedure)h(=.)35
b(The)23 b(\014rst/leftmost)g(elemen)n(t)h(of)f(a)g(run)291
4309 y(of)31 b(equal)h(elemen)n(ts)g(is)g(the)g(one)f(that)i(surviv)n
(es.)48 b(The)32 b(list)g(or)f(v)n(ector)g(is)h(not)g(otherwise)291
4408 y(disordered.)415 4508 y(These)18 b(pro)r(cedures)f(are)h(linear)f
(time|m)n(uc)n(h)i(faster)f(than)g(the)h Fc(O)r Fr(\()p
Fc(n)2548 4478 y Fk(2)2586 4508 y Fr(\))g(general)e(duplicate-)291
4608 y(elemen)n(t)31 b(deletors)g(that)h(do)g(not)g(assume)f(an)n(y)g
(\\bunc)n(hing")f(of)i(elemen)n(ts)g(\(suc)n(h)f(as)h(the)291
4707 y(ones)22 b(pro)n(vided)h(b)n(y)g(SRFI)h(1\).)35
b(If)24 b(y)n(ou)f(w)n(an)n(t)g(to)g(delete)h(duplicate)g(elemen)n(ts)f
(from)g(a)g(large)291 4807 y(list)j(or)f(v)n(ector,)g(y)n(ou)g(can)h
(sort)f(the)h(elemen)n(ts)g(to)g(bring)f(equal)h(items)g(together,)g
(then)g(use)291 4907 y(one)h(of)g(these)h(pro)r(cedures,)e(for)h(a)h
(total)f(time)h(of)g Fc(O)r Fr(\()p Fc(n)14 b Fr(log\()p
Fc(n)p Fr(\)\).)415 5006 y(The)28 b(comparison)e(pro)r(cedure)g(=)h
(passed)g(to)h(these)f(pro)r(cedures)g(is)g(alw)n(a)n(ys)f(applied)p
Black 1681 5255 a(73)p Black eop end
%%Page: 74 82
TeXDict begin 74 81 bop 0 TeXcolorgray Black Black Black
Black Black 739 523 a Fo(\()p Fr(=)43 b Fc(x)h(y)s Fo(\))863
712 y Fr(where)28 b Fc(x)g Fr(comes)f(b)r(efore)g Fc(y)j
Fr(in)e(the)g(con)n(taining)f(list)g(or)g(v)n(ector.)p
Black 863 882 a Fn(\017)p Black 41 w Fo(List-delete-neigh)o(bor)o(-d)o
(ups)17 b Fr(do)r(es)24 b(not)g(alter)f(its)h(input)h(list;)g(its)f
(answ)n(er)f(ma)n(y)946 982 y(share)k(storage)f(with)i(the)g(input)g
(list.)p Black 863 1154 a Fn(\017)p Black 41 w Fo(Vector-delete-nei)o
(ghb)o(or)o(-du)o(ps)13 b Fr(do)r(es)20 b(not)g(alter)f(its)h(input)h
(v)n(ector,)f(but)g(rather)946 1254 y(allo)r(cates)27
b(a)g(fresh)g(v)n(ector)g(to)g(hold)h(the)g(result.)p
Black 863 1426 a Fn(\017)p Black 41 w Fo(List-delete-neigh)o(bor)o(-d)o
(ups)o(!)i Fr(is)c(p)r(ermitted,)g(but)h(not)e(required,)h(to)f(m)n
(utate)946 1526 y(its)j(input)h(list)e(in)h(order)f(to)g(construct)g
(its)h(answ)n(er.)p Black 863 1698 a Fn(\017)p Black
41 w Fo(Vector-delete-nei)o(ghb)o(or)o(-du)o(ps)o(!)38
b Fr(reuses)29 b(its)h(input)g(v)n(ector)f(to)h(hold)g(the)g(an-)946
1798 y(sw)n(er,)i(pac)n(king)f(its)h(answ)n(er)e(in)n(to)h(the)h(index)
g(range)f([)p Fq(start)7 b Fc(;)14 b Fq(end)3009 1767
y Fd(0)3033 1798 y Fr(\),)33 b(where)e Fq(end)3492 1767
y Fd(0)3547 1798 y Fr(is)946 1897 y(the)c(non-negativ)n(e)e(exact)g(in)
n(teger)h(returned)f(as)h(its)g(v)-5 b(alue.)37 b(It)26
b(returns)g Fq(end)3365 1867 y Fd(0)3415 1897 y Fr(as)f(its)946
1997 y(result.)37 b(The)28 b(v)n(ector)e(is)h(not)h(altered)f(outside)g
(the)h(range)f([)p Fq(start)7 b Fc(;)14 b Fq(end)3155
1967 y Fd(0)3179 1997 y Fr(\).)739 2167 y(Examples:)p
Black Black 739 2358 a Fo(\(list-delete-nei)o(gh)o(bor)o(-d)o(ups)37
b(=)43 b('\(1)f(1)h(2)h(7)f(7)g(7)g(0)g(-2)g(-2\)\))826
2457 y Fr(=)-14 b Fn(\))43 b Fo(\(1)g(2)g(7)h(0)f(-2\))739
2657 y(\(vector-delete-n)o(ei)o(ghb)o(or)o(-du)o(ps)37
b(=)43 b('#\(1)f(1)h(2)g(7)h(7)f(7)g(0)g(-2)g(-2\)\))826
2756 y Fr(=)-14 b Fn(\))43 b Fo(#\(1)g(2)g(7)g(0)g(-2\))739
2956 y(\(vector-delete-n)o(ei)o(ghb)o(or)o(-du)o(ps)37
b(=)43 b('#\(1)f(1)h(2)g(7)h(7)f(7)g(0)g(-2)g(-2\))f(3)h(7\))826
3055 y Fr(=)-14 b Fn(\))43 b Fo(#\(7)g(0)g(-2\))739 3254
y(;;)g(Result)e(left)h(in)g(v[3,9\):)739 3354 y(\(let)g(\(\(v)g
(\(vector)f(0)i(0)g(0)g(1)h(1)f(2)g(2)g(3)g(3)g(4)h(4)f(5)g(5)g(6)g
(6\)\)\))826 3454 y(\(cons)f(\(vector-delete-)o(nei)o(gh)o(bo)o(r-d)o
(up)o(s!)37 b(=)43 b(v)h(3\))1088 3553 y(v\)\))870 3653
y Fr(=)-15 b Fn(\))44 b Fo(\(9)f(.)g(#\(0)f(0)h(0)h(1)f(2)g(3)g(4)g(5)g
(6)h(4)f(4)g(5)g(5)g(6)h(6\)\))739 3877 y(binary-searches)p
Fm(|v)m(ector)27 b(binary)33 b(searc)m(h)p Black 755
4047 a Fn(\017)p Black 42 w Fo(\(vector-binary-)o(se)o(arc)o(h)i
Fc(<)41 b Fq(elt-)p Fc(>)p Fq(key)h(key)g(ve)l(ctor)g([start)f([end]])9
b Fo(\))43 b Fn(!)f Fq(inte)l(ger)f(or)h Fo(#f)p Black
755 4147 a Fn(\017)p Black 42 w Fo(\(vector-binary-)o(se)o(arc)o(h3)35
b Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)43 b(ve)l(ctor)e([start)h([end]])9
b Fo(\))42 b Fn(!)g Fq(inte)l(ger)g(or)g Fo(#f)863 4318
y(vector-binary-sea)o(rch)20 b Fr(searc)n(hes)k Fq(ve)l(ctor)36
b Fr(in)27 b(range)e([)p Fq(start)7 b Fc(;)14 b Fq(end)9
b Fr(\))27 b(\(whic)n(h)g(default)739 4417 y(to)37 b(0)g(and)g(the)h
(length)f(of)h Fq(ve)l(ctor)9 b Fr(,)40 b(resp)r(ectiv)n(ely\))d(for)f
(an)h(elemen)n(t)h(whose)f(asso)r(ciated)739 4517 y(k)n(ey)31
b(is)g(equal)g(to)g Fq(key)9 b Fr(.)48 b(The)32 b(pro)r(cedure)e
Fq(elt-)p Fc(>)p Fq(key)39 b Fr(is)32 b(used)f(to)g(map)h(an)f(elemen)n
(t)h(to)f(its)739 4617 y(asso)r(ciated)25 b(k)n(ey)-7
b(.)36 b(The)27 b(elemen)n(ts)f(of)h(the)g(v)n(ector)e(are)h(assumed)g
(to)h(b)r(e)g(ordered)e(b)n(y)i(the)g Fc(<)739 4716 y
Fr(relation)g(on)g(these)g(k)n(eys.)36 b(That)28 b(is,)p
Black Black 739 4907 a Fo(\(vector-sorted?)37 b(\(lambda)k(\(x)i(y\))f
(\()p Fc(<)h Fo(\()p Fq(elt-)p Fc(>)p Fq(key)51 b Fo(x\))42
b(\()p Fq(elt-)p Fc(>)p Fq(key)51 b Fo(y\)\)\))1436 5006
y Fq(ve)l(ctor)i(start)e(end)9 b Fo(\))43 b Fr(=)-14
b Fn(\))44 b Fo(true)p Black 2130 5255 a Fr(74)p Black
eop end
%%Page: 75 83
TeXDict begin 75 82 bop 0 TeXcolorgray Black Black Black
415 523 a Fr(An)25 b(elemen)n(t)g Fq(e)31 b Fr(of)24
b Fq(ve)l(ctor)34 b Fr(is)24 b(a)g(matc)n(h)h(for)f Fq(key)32
b Fr(if)25 b(it's)g(neither)f(less)g(nor)g(greater)f(than)291
623 y(the)28 b(k)n(ey:)p Black Black 291 837 a Fo(\(and)42
b(\(not)f(\()p Fc(<)i Fo(\()p Fq(elt-)p Fc(>)p Fq(key)51
b(e)6 b Fo(\))43 b Fq(key)8 b Fo(\)\))509 937 y(\(not)41
b(\()p Fc(<)i Fq(key)52 b Fo(\()p Fq(elt-)p Fc(>)p Fq(key)e(e)7
b Fo(\)\)\)\))415 1145 y Fr(If)29 b(there)f(is)g(suc)n(h)g(an)g(elemen)
n(t,)h(the)g(pro)r(cedure)e(returns)g(its)i(index)f(in)h(the)g(v)n
(ector)e(as)291 1245 y(an)20 b(exact)g(in)n(teger.)34
b(If)21 b(there)g(is)f(no)h(suc)n(h)f(elemen)n(t)h(in)g(the)g(searc)n
(hed)e(range,)i(the)g(pro)r(cedure)291 1344 y(returns)26
b(false.)p Black Black 291 1559 a Fo(\(vector-binary-)o(sea)o(rc)o(h)37
b(<)44 b(car)e(4)h('#\(\(1)f(.)h(one\))f(\(3)h(.)g(three\))1729
1658 y(\(4)g(.)g(four\))e(\(25)i(.)g(twenty-five\)\)\))291
1758 y Fr(=)-15 b Fn(\))44 b Fo(2)291 1957 y(\(vector-binary-)o(sea)o
(rc)o(h)37 b(<)44 b(car)e(7)h('#\(\(1)f(.)h(one\))f(\(3)h(.)g(three\))
1729 2057 y(\(4)g(.)g(four\))e(\(25)i(.)g(twenty-five\)\)\))291
2156 y Fr(=)-15 b Fn(\))44 b Fo(#f)415 2365 y(Vector-binary-se)o(arc)o
(h3)18 b Fr(is)24 b(a)g(v)-5 b(arian)n(t)23 b(that)h(uses)g(a)g
(three-w)n(a)n(y)f(comparison)f(pro-)291 2464 y(cedure)28
b Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)6 b Fr(.)43 b Fq(Comp)l(ar)l(e-pr)l(o)
l(c)35 b Fr(compares)28 b(its)i(parameter)e(to)h(the)h(searc)n(h)d(k)n
(ey)-7 b(,)291 2564 y(and)28 b(returns)f(an)h(exact)g(in)n(teger)f
(whose)g(sign)h(indicates)g(its)h(relationship)e(to)h(the)g(searc)n(h)
291 2663 y(k)n(ey)-7 b(.)827 2777 y(\()p Fq(c)l(omp)l(ar)l(e-pr)l(o)l
(c)33 b Fc(x)p Fr(\))84 b Fc(<)f Fr(0)f Fn(\))h Fc(x)h(<)e
Fq(se)l(ar)l(ch-key)827 2876 y Fr(\()p Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)
33 b Fc(x)p Fr(\))84 b(=)f(0)f Fn(\))h Fc(x)h Fr(=)e
Fq(se)l(ar)l(ch-key)827 2976 y Fr(\()p Fq(c)l(omp)l(ar)l(e-pr)l(o)l(c)
33 b Fc(x)p Fr(\))84 b Fc(>)f Fr(0)f Fn(\))h Fc(x)h(>)e
Fq(se)l(ar)l(ch-key)p Black Black 291 3187 a Fo(\(vector-binary-)o(sea)
o(rc)o(h3)37 b(\(lambda)k(\(elt\))g(\(-)i(\(car)f(elt\))g(4\)\))1293
3286 y('#\(\(1)g(.)h(one\))f(\(3)g(.)i(three\))1424 3386
y(\(4)f(.)g(four\))e(\(25)i(.)g(twenty-five\)\)\))291
3486 y Fr(=)-15 b Fn(\))44 b Fo(2)291 3752 y Fe(5.20.3)112
b(Algorithmic)37 b(prop)s(erties)291 3917 y Fr(Di\013eren)n(t)26
b(sort)f(and)h(merge)g(algorithms)e(ha)n(v)n(e)h(di\013eren)n(t)h(prop)
r(erties.)36 b(Cho)r(ose)25 b(the)i(algo-)291 4017 y(rithm)g(that)h
(matc)n(hes)f(y)n(our)g(needs:)p Black 291 4225 a Fm(V)-8
b(ector)32 b(insert)f(sort)p Black 42 w Fr(Stable,)c(but)i(only)e
(suitable)g(for)g(small)h(v)n(ectors|)p Fc(O)r Fr(\()p
Fc(n)2821 4195 y Fk(2)2857 4225 y Fr(\).)p Black 291
4416 a Fm(V)-8 b(ector)32 b(quic)m(k)h(sort)p Black 41
w Fr(Not)d(stable.)41 b(Is)30 b(fast)f(on)g(a)n(v)n(erage|)p
Fc(O)r Fr(\()p Fc(n)14 b Fr(log)n(\()p Fc(n)p Fr(\)\)|but)30
b(has)f(bad)498 4516 y(w)n(orst-case)i(b)r(eha)n(viour.)52
b(Has)33 b(go)r(o)r(d)g(memory)f(lo)r(calit)n(y)g(for)h(big)g(v)n
(ectors)f(\(unlik)n(e)498 4615 y(heap)g(sort\).)49 b(A)33
b(clev)n(er)d(piv)n(ot-pic)n(king)h(tric)n(k)g(\(median)i(of)e(three)h
(samples\))g(helps)498 4715 y(a)n(v)n(oid)26 b(w)n(orst-case)f(b)r(eha)
n(viour,)i(but)h(pathological)e(cases)g(can)i(still)f(blo)n(w)g(up.)p
Black 291 4907 a Fm(V)-8 b(ector)32 b(heap)g(sort)p Black
41 w Fr(Not)22 b(stable.)35 b(Guaran)n(teed)20 b(fast|)p
Fc(O)r Fr(\()p Fc(n)14 b Fr(log)q(\()p Fc(n)p Fr(\)\))22
b Fq(worst)30 b Fr(case.)k(P)n(o)r(or)498 5006 y(lo)r(calit)n(y)27
b(on)g(large)f(v)n(ectors.)36 b(A)28 b(v)n(ery)e(reliable)h(w)n
(orkhorse.)p Black 1681 5255 a(75)p Black eop end
%%Page: 76 84
TeXDict begin 76 83 bop 0 TeXcolorgray Black Black Black
Black 739 523 a Fm(V)-8 b(ector)32 b(merge)f(sort)p Black
42 w Fr(Stable.)j(Not)18 b(in-place|requires)f(a)h(temp)r(orary)f
(bu\013er)i(of)g(equal)946 623 y(size.)37 b(F)-7 b(ast|)p
Fc(O)r Fr(\()p Fc(n)14 b Fr(log)q(\()p Fc(n)p Fr(\)\)|and)27
b(has)g(go)r(o)r(d)g(memory)f(lo)r(calit)n(y)h(for)g(large)f(v)n
(ectors.)946 754 y(The)d(implemen)n(tation)g(of)f(v)n(ector)f(merge)h
(sort)g(pro)n(vided)f(b)n(y)h(this)h(implemen)n(tation)946
853 y(is,)33 b(additionally)-7 b(,)32 b(a)f(\\natural")f(sort,)i
(meaning)f(that)h(it)g(exploits)f(existing)h(order)946
953 y(in)c(the)g(input)h(data,)e(pro)n(viding)f Fc(O)r
Fr(\()p Fc(n)p Fr(\))j(b)r(est)f(case.)p Black 739 1116
a Fm(Destructiv)m(e)k(list)f(merge)g(sort)p Black 41
w Fr(Stable,)e(fast)g(and)g(in-place)f(\(i.e.,)h(allo)r(cates)f(no)g
(new)946 1215 y(cons)23 b(cells\).)36 b(\\F)-7 b(ast")22
b(means)i Fc(O)r Fr(\()p Fc(n)14 b Fr(log\()p Fc(n)p
Fr(\)\))25 b(w)n(orst-case,)d(and)h(substan)n(tially)g(b)r(etter)946
1315 y(if)29 b(the)g(data)f(is)g(already)f(mostly)h(ordered,)g(all)g
(the)h(w)n(a)n(y)e(do)n(wn)h(to)g(linear)g(time)h(for)946
1415 y(a)f(completely-ordered)d(input)k(list)f(\(i.e.,)g(it)g(is)f(a)g
(\\natural")f(sort\).)946 1546 y(Note)33 b(that)f(sorting)f(lists)h(in)
n(v)n(olv)n(es)f(c)n(hasing)g(p)r(oin)n(ters)g(through)h(memory)-7
b(,)32 b(whic)n(h)946 1646 y(can)23 b(b)r(e)g(a)f(loser)f(on)h(mo)r
(dern)h(mac)n(hine)f(arc)n(hitectures)f(b)r(ecause)h(of)h(p)r(o)r(or)f
(cac)n(he)f(and)946 1745 y(page)27 b(lo)r(calit)n(y)-7
b(.)36 b(Sorting)27 b(v)n(ectors)f(has)h(inheren)n(tly)h(b)r(etter)g
(lo)r(calit)n(y)-7 b(.)946 1876 y(This)26 b(implemen)n(tation's)g
(destructiv)n(e)g(list)g(merge)f(and)h(merge)f(sort)g(implemen)n(ta-)
946 1976 y(tions)e(are)f(opp)r(ortunistic|they)h(a)n(v)n(oid)f
(redundan)n(t)h Fo(set-cdr!)p Fr(s,)d(and)j(try)g(to)g(tak)n(e)946
2076 y(long)k(already-ordered)e(runs)i(of)g(list)h(structure)f(as-is)g
(when)h(doing)f(the)h(merges.)p Black 739 2238 a Fm(Pure)k(list)f
(merge)g(sort)p Black 41 w Fr(Stable)j(and)g(fast|)p
Fc(O)r Fr(\()p Fc(n)14 b Fr(log\()p Fc(n)p Fr(\)\))35
b(w)n(orst-case,)e(and)h(p)r(ossibly)946 2338 y Fc(O)r
Fr(\()p Fc(n)p Fr(\),)29 b(dep)r(ending)f(up)r(on)g(the)g(input)g(list)
g(\(see)g(discussion)f(ab)r(o)n(v)n(e\).)p Black Black
1013 2512 a(Algorithm)208 b(Stable?)99 b(W)-7 b(orst)28
b(case)121 b(Av)n(erage)25 b(case)99 b(In-place)p 963
2545 2417 4 v 1013 2614 a(V)-7 b(ector)27 b(insert)113
b(Y)-7 b(es)239 b Fc(O)r Fr(\()p Fc(n)2104 2584 y Fk(2)2142
2614 y Fr(\))299 b Fc(O)r Fr(\()p Fc(n)2620 2584 y Fk(2)2658
2614 y Fr(\))351 b(Y)-7 b(es)1013 2714 y(V)g(ector)27
b(quic)n(k)125 b(No)260 b Fc(O)r Fr(\()p Fc(n)2104 2684
y Fk(2)2142 2714 y Fr(\))299 b Fc(O)r Fr(\()p Fc(n)14
b Fr(log\()p Fc(n)p Fr(\)\))154 b(Y)-7 b(es)1013 2814
y(V)g(ector)27 b(heap)146 b(No)260 b Fc(O)r Fr(\()p Fc(n)14
b Fr(log)q(\()p Fc(n)p Fr(\)\))101 b Fc(O)r Fr(\()p Fc(n)14
b Fr(log\()p Fc(n)p Fr(\)\))154 b(Y)-7 b(es)1013 2913
y(V)g(ector)27 b(merge)99 b(Y)-7 b(es)239 b Fc(O)r Fr(\()p
Fc(n)14 b Fr(log)q(\()p Fc(n)p Fr(\)\))101 b Fc(O)r Fr(\()p
Fc(n)14 b Fr(log\()p Fc(n)p Fr(\)\))154 b(No)1013 3013
y(List)27 b(merge)195 b(Y)-7 b(es)239 b Fc(O)r Fr(\()p
Fc(n)14 b Fr(log)q(\()p Fc(n)p Fr(\)\))101 b Fc(O)r Fr(\()p
Fc(n)14 b Fr(log\()p Fc(n)p Fr(\)\))154 b(Either)739
3258 y Fj(5.21)135 b(Regular)47 b(expressions)739 3440
y Fr(This)22 b(section)h(describ)r(es)e(a)i(functional)f(in)n(terface)g
(for)g(building)h(regular)e(expressions)f(and)739 3539
y(matc)n(hing)26 b(them)h(against)e(strings.)35 b(The)27
b(matc)n(hing)e(is)i(done)f(using)g(the)g(POSIX)g(regular)739
3639 y(expression)g(pac)n(k)-5 b(age.)35 b(Regular)27
b(expressions)f(are)g(in)i(the)g(structure)f Fo(regexps)p
Fr(.)863 3739 y(A)j(regular)d(expression)g(is)i(either)g(a)f(c)n
(haracter)f(set,)i(whic)n(h)g(matc)n(hes)f(an)n(y)g(c)n(haracter)739
3838 y(in)36 b(the)g(set,)h(or)e(a)g(comp)r(osite)g(expression)f(con)n
(taining)h(one)g(or)g(more)g(sub)r(expressions.)739 3938
y(A)d(regular)f(expression)g(can)g(b)r(e)i(matc)n(hed)f(against)f(a)h
(string)f(to)h(determine)h(success)e(or)739 4037 y(failure,)c(and)h(to)
f(determine)h(the)g(substrings)e(matc)n(hed)i(b)n(y)f(particular)f(sub)
r(expressions.)p Black 755 4180 a Fn(\017)p Black 42
w Fo(\(regexp?)46 b Fq(value)6 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)
739 4323 y Fr(Returns)23 b Fo(#t)g Fr(if)30 b Fq(value)g
Fr(is)23 b(a)g(regular)f(expression)f(created)i(using)g(the)g
(functional)h(in)n(terface)739 4423 y(for)j(regular)f(expressions,)g
(and)h Fo(#f)g Fr(otherwise.)739 4654 y Fe(5.21.1)112
b(Character)38 b(sets)739 4807 y Fr(Character)c(sets)h(ma)n(y)h(b)r(e)g
(de\014ned)g(using)f(a)h(list)g(of)f(c)n(haracters)f(and)h(strings,)i
(using)f(a)739 4907 y(range)29 b(or)h(ranges)f(of)i(c)n(haracters,)e
(or)h(b)n(y)h(using)f(set)h(op)r(erations)e(on)i(existing)f(c)n
(haracter)739 5006 y(sets.)p Black 2130 5255 a(76)p Black
eop end
%%Page: 77 85
TeXDict begin 77 84 bop 0 TeXcolorgray Black Black Black
Black 307 523 a Fn(\017)p Black 41 w Fo(\(set)40 b Fq(char)l
(acter-or-string)j(.)13 b(.)g(.)g Fo(\))50 b Fn(!)42
b Fq(char-set)p Black 307 623 a Fn(\017)p Black 41 w
Fo(\(range)d Fq(low-char)k(high-char)9 b Fo(\))44 b Fn(!)d
Fq(char-set)p Black 307 722 a Fn(\017)p Black 41 w Fo(\(ranges)e
Fq(low-char)k(high-char)h(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41
b Fq(char-set)p Black 307 822 a Fn(\017)p Black 41 w
Fo(\(ascii-range)c Fq(low-char)43 b(high-char)9 b Fo(\))43
b Fn(!)f Fq(char-set)p Black 307 922 a Fn(\017)p Black
41 w Fo(\(ascii-ranges)36 b Fq(low-char)43 b(high-char)h(.)13
b(.)g(.)g Fo(\))51 b Fn(!)42 b Fq(char-set)291 1071 y
Fo(Set)29 b Fr(returns)h(a)g(set)h(that)g(con)n(tains)e(the)i(c)n
(haracter)e(argumen)n(ts)g(and)h(the)h(c)n(haracters)e(in)291
1171 y(an)n(y)c(string)h(argumen)n(ts.)35 b Fo(Range)24
b Fr(returns)h(a)h(c)n(haracter)e(set)i(that)h(con)n(tain)e(all)h(c)n
(haracters)291 1270 y(b)r(et)n(w)n(een)j Fq(low-char)40
b Fr(and)29 b Fq(high-char)9 b Fr(,)32 b(inclusiv)n(e.)42
b Fo(Ranges)26 b Fr(returns)j(a)g(set)g(that)h(con)n(tains)291
1370 y(all)e(c)n(haracters)e(in)j(the)g(giv)n(en)f(ranges.)38
b Fo(Range)27 b Fr(and)h Fo(ranges)e Fr(use)j(the)g(ordering)d(induced)
291 1469 y(b)n(y)31 b Fo(char->integer)p Fr(.)42 b Fo(Ascii-range)27
b Fr(and)k Fo(ascii-ranges)26 b Fr(use)k(the)i(ASCI)r(I)g(ordering.)291
1569 y(It)39 b(is)f(an)h(error)e(for)h(a)g Fq(high-char)51
b Fr(to)38 b(b)r(e)h(less)g(than)g(the)g(preceding)g
Fq(low-char)49 b Fr(in)40 b(the)291 1669 y(appropriate)25
b(ordering.)p Black 307 1818 a Fn(\017)p Black 41 w Fo(\(negate)39
b Fq(char-set)8 b Fo(\))41 b Fn(!)h Fq(char-set)p Black
307 1918 a Fn(\017)p Black 41 w Fo(\(intersection)36
b Fq(char-set)42 b(char-set)8 b Fo(\))42 b Fn(!)f Fq(char-set)p
Black 307 2017 a Fn(\017)p Black 41 w Fo(\(union)e Fq(char-set)j
(char-set)8 b Fo(\))42 b Fn(!)f Fq(char-set)p Black 307
2117 a Fn(\017)p Black 41 w Fo(\(subtract)d Fq(char-set)k(char-set)8
b Fo(\))41 b Fn(!)h Fq(char-set)291 2267 y Fr(These)27
b(p)r(erform)g(the)h(indicated)g(op)r(erations)e(on)h(c)n(haracter)f
(sets.)415 2366 y(The)i(follo)n(wing)e(c)n(haracter)g(sets)h(are)g
(prede\014ned:)496 2618 y Fo(lower-case)183 b(\(set)42
b("abcdefghijklmn)o(opq)o(rs)o(tuv)o(wx)o(yz)o("\))496
2718 y(upper-case)183 b(\(set)42 b("ABCDEFGHIJKLMN)o(OPQ)o(RS)o(TUV)o
(WX)o(YZ)o("\))496 2817 y(alphabetic)183 b(\(union)41
b(lower-case)e(upper-case\))496 2917 y(numeric)315 b(\(set)42
b("0123456789"\))496 3017 y(alphanumeric)95 b(\(union)41
b(alphabetic)e(numeric\))496 3116 y(punctuation)139 b(\(set)42
b("!\\"#$\045&'\(\)*+,-)o(./:)o(;<)o(=>?)o(@[)o(\\\\)o(]^_)o(`{)o(|}~)o
("\))496 3216 y(graphic)315 b(\(union)41 b(alphanumeric)d
(punctuation\))496 3315 y(printing)271 b(\(union)41 b(graphic)g(\(set)g
(#\\space\)\))496 3415 y(control)315 b(\(negate)40 b(printing\))496
3515 y(blank)403 b(\(set)42 b(#\\space)e(\(ascii->char)f(9\)\))26
b Fr(;)i(9)f(is)h(tab)496 3614 y Fo(whitespace)183 b(\(union)41
b(\(set)h(#\\space\))e(\(ascii-range)f(9)k(13\)\))496
3714 y(hexdigit)271 b(\(set)42 b("0123456789abcd)o(efA)o(BC)o(DEF)o
("\))p Black Black 291 4266 a Fr(The)i(ab)r(o)n(v)n(e)f(are)g(tak)n(en)
h(from)g(the)h(default)f(lo)r(cale)g(in)g(POSIX.)g(The)h(c)n(haracters)
d(in)291 4365 y Fo(whitespace)27 b Fr(are)j Fq(sp)l(ac)l(e)6
b Fr(,)33 b Fq(tab)5 b Fr(,)33 b Fq(new)t(line)38 b Fr(\(=)31
b Fq(line)i(fe)l(e)l(d)9 b Fr(\),)33 b Fq(vertic)l(al)h(tab)5
b Fr(,)33 b Fq(form)h(fe)l(e)l(d)9 b Fr(,)32 b(and)291
4465 y Fq(c)l(arriage)f(r)l(eturn)6 b Fr(.)291 4746 y
Fe(5.21.2)112 b(Anc)m(horing)p Black 307 4907 a Fn(\017)p
Black 41 w Fo(\(string-start\))36 b Fn(!)41 b Fq(r)l(e)l(g-exp)p
Black 307 5006 a Fn(\017)p Black 41 w Fo(\(string-end\))c
Fn(!)k Fq(r)l(e)l(g-exp)p Black 1681 5255 a Fr(77)p Black
eop end
%%Page: 78 86
TeXDict begin 78 85 bop 0 TeXcolorgray Black Black Black
739 523 a Fo(String-start)27 b Fr(returns)k(a)g(regular)f(expression)g
(that)i(matc)n(hes)f(the)i(b)r(eginning)e(of)h(the)739
623 y(string)27 b(b)r(eing)h(matc)n(hed)f(against;)f(string-end)h
(returns)g(one)g(that)h(matc)n(hes)f(the)h(end.)739 854
y Fe(5.21.3)112 b(Comp)s(osite)39 b(expressions)p Black
755 1007 a Fn(\017)p Black 42 w Fo(\(sequence)e Fq(r)l(e)l(g-exp)42
b(.)13 b(.)g(.)g Fo(\))50 b Fn(!)42 b Fq(r)l(e)l(g-exp)p
Black 755 1107 a Fn(\017)p Black 42 w Fo(\(one-of)c Fq(r)l(e)l(g-exp)j
(.)13 b(.)g(.)g Fo(\))51 b Fn(!)42 b Fq(r)l(e)l(g-exp)739
1252 y Fo(Sequence)21 b Fr(matc)n(hes)i(the)h(concatenation)f(of)h(its)
g(argumen)n(ts,)g Fo(one-of)d Fr(matc)n(hes)i(an)n(y)h(one)739
1352 y(of)j(its)h(argumen)n(ts.)p Black 755 1497 a Fn(\017)p
Black 42 w Fo(\(text)39 b Fq(string)7 b Fo(\))41 b Fn(!)h
Fq(r)l(e)l(g-exp)739 1642 y Fo(Text)19 b Fr(returns)g(a)h(regular)f
(expression)f(that)j(matc)n(hes)f(the)g(c)n(haracters)e(in)j
Fq(string)7 b Fr(,)22 b(in)f(order.)p Black 755 1787
a Fn(\017)p Black 42 w Fo(\(repeat)38 b Fq(r)l(e)l(g-exp)5
b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)p Black 755 1887
a Fn(\017)p Black 42 w Fo(\(repeat)c Fq(c)l(ount)j(r)l(e)l(g-exp)5
b Fo(\))41 b Fn(!)g Fq(r)l(e)l(g-exp)p Black 755 1987
a Fn(\017)p Black 42 w Fo(\(repeat)d Fq(min)k(max)f(r)l(e)l(g-exp)5
b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)739 2132 y Fo(Repeat)c
Fr(returns)j(a)f(regular)f(expression)h(that)h(matc)n(hes)f(zero)g(or)g
(more)g(o)r(ccurrences)739 2231 y(of)34 b(its)g Fq(r)l(e)l(g-exp)40
b Fr(argumen)n(t.)55 b(With)35 b(no)f(coun)n(t)g(the)h(result)f(will)g
(matc)n(h)g(an)n(y)f(n)n(um)n(b)r(er)h(of)739 2331 y(times)e(\()p
Fq(r)l(e)l(g-exp)5 b Fr(*\).)50 b(With)33 b(a)e(single)g(coun)n(t)h
(the)g(returned)f(expression)g(will)h(matc)n(h)g Fq(r)l(e)l(g-)739
2431 y(exp)j Fr(exactly)29 b(that)h(n)n(um)n(b)r(er)g(of)g(times.)44
b(The)30 b(\014nal)f(case)g(will)h(matc)n(h)g(from)f
Fq(min)37 b Fr(to)29 b Fq(max)739 2530 y Fr(rep)r(etitions,)41
b(inclusiv)n(e.)68 b Fq(Max)48 b Fr(ma)n(y)38 b(b)r(e)h
Fo(#f)p Fr(,)h(in)e(whic)n(h)g(case)f(there)h(is)h(no)e(maxim)n(um)739
2630 y(n)n(um)n(b)r(er)f(of)h(matc)n(hes.)64 b Fq(Count)44
b Fr(and)37 b Fq(min)43 b Fr(should)37 b(b)r(e)g(exact,)h(non-negativ)n
(e)d(in)n(tegers;)739 2730 y Fq(max)i Fr(should)28 b(either)f(b)r(e)h
(an)g(exact)f(non-negativ)n(e)f(in)n(teger)g(or)h Fo(#f)p
Fr(.)739 2961 y Fe(5.21.4)112 b(Case)39 b(sensitivit)m(y)739
3114 y Fr(Regular)26 b(expressions)g(are)h(normally)f(case-sensitiv)n
(e.)p Black 755 3276 a Fn(\017)p Black 42 w Fo(\(ignore-case)36
b Fq(r)l(e)l(g-exp)5 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)p
Black 755 3376 a Fn(\017)p Black 42 w Fo(\(use-case)37
b Fq(r)l(e)l(g-exp)5 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)739
3537 y Fr(The)30 b(v)-5 b(alue)30 b(returned)f(b)n(y)i
Fo(ignore-case)25 b Fr(is)30 b(iden)n(tical)f(its)h(argumen)n(t)f
(except)h(that)g(case)739 3637 y(will)h(b)r(e)h(ignored)e(when)i(matc)n
(hing.)47 b(The)31 b(v)-5 b(alue)31 b(returned)g(b)n(y)h
Fo(use-case)c Fr(is)k(protected)739 3737 y(from)18 b(future)h
(applications)e(of)25 b Fo(ignore-case)p Fr(.)k(The)19
b(expressions)d(returned)i(b)n(y)i Fo(use-case)739 3836
y Fr(and)27 b Fo(ignore-case)d Fr(are)i(una\013ected)i(b)n(y)g(later)f
(uses)g(of)h(the)g(these)f(pro)r(cedures.)36 b(By)27
b(w)n(a)n(y)739 3936 y(of)g(example,)h(the)g(follo)n(wing)e(matc)n(hes)
h Fo("ab")f Fr(but)i(not)g Fo("aB")p Fr(,)e Fo("Ab")p
Fr(,)g(or)h Fo("AB")p Fr(.)p Black Black 739 4098 a Fo(\(text)41
b("ab"\))739 4259 y Fr(while)p Black Black 739 4421 a
Fo(\(ignore-case)e(\(test)i("ab"\)\))739 4583 y Fr(matc)n(hes)27
b Fo("ab")p Fr(,)f Fo("aB")p Fr(,)g Fo("Ab")p Fr(,)g(and)i
Fo("AB")e Fr(and)p Black Black 739 4745 a Fo(\(ignore-case)39
b(\(sequence)g(\(text)j("a"\))1741 4844 y(\(use-case)e(\(text)i
("b"\)\)\)\))739 5006 y Fr(matc)n(hes)27 b Fo("ab")f
Fr(and)h Fo("Ab")f Fr(but)j(not)e Fo("aB")f Fr(or)h Fo("AB")p
Fr(.)p Black 2130 5255 a(78)p Black eop end
%%Page: 79 87
TeXDict begin 79 86 bop 0 TeXcolorgray Black Black Black
291 523 a Fe(5.21.5)112 b(Submatc)m(hes)39 b(and)f(matc)m(hing)291
676 y Fr(A)21 b(sub)r(expression)f(within)i(a)f(larger)f(expression)f
(can)i(b)r(e)h(mark)n(ed)e(as)h(a)g(submatc)n(h.)34 b(When)291
776 y(an)g(expression)g(is)h(matc)n(hed)g(against)f(a)g(string,)i(the)g
(success)e(or)g(failure)h(of)g(eac)n(h)f(sub-)291 876
y(matc)n(h)22 b(within)h(that)f(expression)f(is)h(rep)r(orted,)h(as)e
(w)n(ell)h(as)g(the)g(lo)r(cation)g(of)g(the)h(substring)291
975 y(matc)n(hed)k(b)r(e)h(eac)n(h)f(successful)g(submatc)n(h.)p
Black 307 1118 a Fn(\017)p Black 41 w Fo(\(submatch)38
b Fq(key)k(r)l(e)l(g-exp)5 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)p
Black 307 1217 a Fn(\017)p Black 41 w Fo(\(no-submatches)36
b Fq(r)l(e)l(g-exp)5 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(g-exp)291
1360 y Fo(Submatch)31 b Fr(returns)j(a)h(regular)e(expression)h(that)h
(matc)n(hes)f(its)h(argumen)n(t)f(and)h(causes)291 1459
y(the)i(result)g(of)f(matc)n(hing)h(its)g(argumen)n(t)f(to)g(b)r(e)i
(rep)r(orted)e(b)n(y)h(the)g Fo(match)e Fr(pro)r(cedure.)291
1559 y Fq(Key)44 b Fr(is)36 b(used)g(to)g(indicate)g(the)h(result)f(of)
g(this)h(particular)e(submatc)n(h)h(in)g(the)h(alist)f(of)291
1658 y(successful)f(submatc)n(hes)h(returned)f(b)n(y)i
Fo(match)p Fr(.)60 b(An)n(y)36 b(v)-5 b(alue)35 b(ma)n(y)h(b)r(e)g
(used)g(as)f(a)h Fq(key)7 b Fr(.)291 1758 y Fo(No-submatches)21
b Fr(returns)26 b(an)h(expression)e(iden)n(tical)i(to)g(its)g(argumen)n
(t,)f(except)h(that)g(all)291 1858 y(submatc)n(hes)g(ha)n(v)n(e)f(b)r
(een)i(elided.)p Black 307 2000 a Fn(\017)p Black 41
w Fo(\(any-match?)46 b Fq(r)l(e)l(g-exp)41 b(string)7
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2100
a Fn(\017)p Black 41 w Fo(\(exact-match?)j Fq(r)l(e)l(g-exp)c(string)7
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2199
a Fn(\017)p Black 41 w Fo(\(match)d Fq(r)l(e)l(g-exp)i(string)7
b Fo(\))42 b Fn(!)f Fq(match)h(or)g Fo(#f)p Black 307
2299 a Fn(\017)p Black 41 w Fo(\(match-start)37 b Fq(match)6
b Fo(\))42 b Fn(!)f Fq(index)p Black 307 2399 a Fn(\017)p
Black 41 w Fo(\(match-end)d Fq(match)6 b Fo(\))42 b Fn(!)f
Fq(index)p Black 307 2498 a Fn(\017)p Black 41 w Fo(\(match-submatches)
35 b Fq(match)6 b Fo(\))42 b Fn(!)f Fq(alist)291 2641
y Fo(Any-match?)j Fr(returns)31 b Fo(#t)f Fr(if)39 b
Fq(string)f Fr(matc)n(hes)31 b Fq(r)l(e)l(g-exp)37 b
Fr(or)30 b(con)n(tains)h(a)g(substring)g(that)291 2740
y(do)r(es,)23 b(and)f Fo(#f)f Fr(otherwise.)35 b Fo(Exact-match?)30
b Fr(returns)21 b Fo(#t)h Fr(if)29 b Fq(string)h Fr(matc)n(hes)22
b Fq(r)l(e)l(g-exp)27 b Fr(and)291 2840 y Fo(#f)f Fr(otherwise.)415
2939 y Fo(Match)i Fr(returns)h Fo(#f)g Fr(if)36 b Fq(r)l(e)l(g-exp)f
Fr(do)r(es)30 b(not)f(matc)n(h)h Fq(string)37 b Fr(and)29
b(a)h(matc)n(h)f(record)f(if)i(it)291 3039 y(do)r(es)i(matc)n(h.)51
b(A)32 b(matc)n(h)g(record)f(con)n(tains)h(three)g(v)-5
b(alues:)46 b(the)33 b(b)r(eginning)f(and)g(end)h(of)291
3139 y(the)25 b(substring)g(that)g(matc)n(hed)g(the)h(pattern)f(and)g
(an)g(a-list)g(of)g(submatc)n(h)g(k)n(eys)f(and)h(cor-)291
3238 y(resp)r(onding)f(matc)n(h)h(records)f(for)g(an)n(y)h(submatc)n
(hes)g(that)g(also)f(matc)n(hed.)36 b Fo(Match-start)291
3338 y Fr(returns)20 b(the)i(index)f(of)g(the)g(\014rst)g(c)n(haracter)
e(in)j(the)f(matc)n(hing)g(substring)g(and)g Fo(match-end)291
3438 y Fr(giv)n(es)c(index)h(of)h(the)f(\014rst)g(c)n(haracter)f(after)
h(the)h(matc)n(hing)e(substring.)34 b Fo(Match-submatche)o(s)291
3537 y Fr(returns)20 b(an)h(alist)g(of)h(submatc)n(h)f(k)n(eys)f(and)h
(matc)n(h)g(records.)33 b(Only)21 b(the)h(top)f(matc)n(h)g(record)291
3637 y(returned)27 b(b)n(y)h Fo(match)e Fr(has)h(a)g(submatc)n(h)g
(alist.)415 3737 y(Matc)n(hing)j(o)r(ccurs)f(according)g(to)h(POSIX.)g
(The)g(matc)n(h)g(returned)g(is)g(the)h(one)e(with)291
3836 y(the)i(lo)n(w)n(est)f(starting)g(index)i(in)f Fq(string)7
b Fr(.)48 b(If)32 b(there)e(is)h(more)g(than)g(one)g(suc)n(h)g(matc)n
(h,)h(the)291 3936 y(longest)k(is)i(returned.)67 b(Within)38
b(that)g(matc)n(h)g(the)g(longest)f(p)r(ossible)g(submatc)n(hes)g(are)
291 4035 y(returned.)415 4135 y(All)31 b(three)f(matc)n(hing)g(pro)r
(cedures)f(cac)n(he)g(a)h(compiled)g(v)n(ersion)f(of)36
b Fq(r)l(e)l(g-exp)5 b Fr(.)45 b(Subse-)291 4235 y(quen)n(t)27
b(calls)g(with)h(the)g(same)f Fq(r)l(e)l(g-exp)33 b Fr(will)28
b(b)r(e)g(more)f(e\016cien)n(t.)415 4334 y(The)34 b(C)f(in)n(terface)g
(to)h(the)g(POSIX)f(regular)f(expression)g(co)r(de)i(uses)f(ASCI)r(I)h
Fo(nul)f Fr(as)291 4434 y(an)g(end-of-string)f(mark)n(er.)53
b(The)34 b(matc)n(hing)f(pro)r(cedures)f(will)i(ignore)e(an)n(y)h(c)n
(haracters)291 4534 y(follo)n(wing)26 b(an)h(em)n(b)r(edded)h(ASCI)r(I)
h Fo(nul)p Fr(s)d(in)i Fq(string)7 b Fr(.)p Black Black
291 4707 a Fo(\(define)40 b(pattern)h(\(text)g("abc"\)\))291
4807 y(\(any-match?)e(pattern)h("abc"\))390 b Fn(!)44
b Fo(#t)291 4907 y(\(any-match?)39 b(pattern)h("abx"\))390
b Fn(!)44 b Fo(#f)291 5006 y(\(any-match?)39 b(pattern)h("xxabcxx"\))
214 b Fn(!)44 b Fo(#t)p Black 1681 5255 a Fr(79)p Black
eop end
%%Page: 80 88
TeXDict begin 80 87 bop 0 TeXcolorgray Black Black Black
739 623 a Fo(\(exact-match?)38 b(pattern)j("abc"\))302
b Fn(!)44 b Fo(#t)739 722 y(\(exact-match?)38 b(pattern)j("abx"\))302
b Fn(!)44 b Fo(#f)739 822 y(\(exact-match?)38 b(pattern)j("xxabcxx"\))
126 b Fn(!)44 b Fo(#f)739 1021 y(\(match)d(pattern)g("abc"\))607
b Fn(!)44 b Fo(#)p Fn(f)p Fo(match)d(0)i(3)p Fn(g)739
1121 y Fo(\(match)e(pattern)g("abx"\))607 b Fn(!)44 b
Fo(#f)739 1220 y(\(match)d(pattern)g("xxabcxx"\))431
b Fn(!)44 b Fo(#)p Fn(f)p Fo(match)d(2)i(5)p Fn(g)739
1420 y Fo(\(let)f(\(\(x)g(\(match)f(\(sequence)f(\(text)i("ab"\))1872
1519 y(\(submatch)e('foo)i(\(text)f("cd"\)\))1872 1619
y(\(text)h("ef"\)\))1436 1719 y("xxxabcdefxx"\)\)\))826
1818 y(\(list)g(x)h(\(match-submatche)o(s)37 b(x\)\)\))826
1918 y Fn(!)44 b Fo(\(#)p Fn(f)p Fo(match)c(3)j(9)p Fn(g)g
Fo(\(\(foo)e(.)i(#)p Fn(f)p Fo(match)e(5)i(7)p Fn(g)p
Fo(\)\))739 2117 y(\(match-submatche)o(s)826 2217 y(\(match)e
(\(sequence)1218 2316 y(\(set)h("a"\))1218 2416 y(\(one-of)f
(\(submatch)f('foo)i(\(text)f("bc"\)\))1567 2516 y(\(submatch)f('bar)i
(\(text)f("BC"\)\)\)\))1131 2615 y("xxxaBCd"\)\))826
2715 y Fn(!)j Fo(\(\(bar)d(.)i(#)p Fn(f)p Fo(match)e(4)i(6)p
Fn(g)p Fo(\)\))739 2994 y Fj(5.22)135 b(SRFIs)739 3178
y Fr(`SRFI')26 b(stands)g(for)f(`Sc)n(heme)h(Request)f(F)-7
b(or)25 b(Implemen)n(tation'.)37 b(An)26 b(SRFI)g(is)g(a)f(descrip-)739
3278 y(tion)33 b(of)f(an)g(extension)g(to)h(standard)e(Sc)n(heme.)52
b(Draft)33 b(and)f(\014nal)h(SRFI)g(do)r(cumen)n(ts,)h(a)739
3377 y(F)-9 b(A)n(Q,)18 b(and)g(other)g(information)g(ab)r(out)g(SRFIs)
h(can)f(b)r(e)g(found)h(at)f Fo(http://srfi.schem)o(er)o(s.o)o(rg)o
Fr(.)863 3478 y(Sc)n(heme)28 b(48)f(includes)g(implemen)n(tations)h(of)
f(the)h(follo)n(wing)f(\(\014nal\))h(SRFIs:)p Black 863
3647 a Fn(\017)p Black 41 w Fr(SRFI)h(1)e({)g(List)h(Library)p
Black 863 3817 a Fn(\017)p Black 41 w Fr(SRFI)h(2)e({)g
Fo(and-let*)p Black 863 3987 a Fn(\017)p Black 41 w Fr(SRFI)i(4)e({)g
(Homogeneous)f(n)n(umeric)h(v)n(ector)f(datat)n(yp)r(es)h(\(see)h(note)
f(b)r(elo)n(w\))p Black 863 4157 a Fn(\017)p Black 41
w Fr(SRFI)i(5)e({)g Fo(let)f Fr(with)i(signatures)f(and)g(rest)g
(argumen)n(ts)p Black 863 4327 a Fn(\017)p Black 41 w
Fr(SRFI)i(6)e({)g(Basic)g(string)g(p)r(orts)p Black 863
4496 a Fn(\017)p Black 41 w Fr(SRFI)i(7)e({)g(Program)e
(con\014guration)p Black 863 4666 a Fn(\017)p Black 41
w Fr(SRFI)k(8)e({)g Fo(receive)p Black 863 4836 a Fn(\017)p
Black 41 w Fr(SRFI)i(9)e({)g(De\014ning)h(record)e(t)n(yp)r(es)p
Black 863 5006 a Fn(\017)p Black 41 w Fr(SRFI)j(11)d({)h(Syn)n(tax)g
(for)h(receiving)e(m)n(ultiple)i(v)-5 b(alues)p Black
2130 5255 a(80)p Black eop end
%%Page: 81 89
TeXDict begin 81 88 bop 0 TeXcolorgray Black Black Black
Black 415 523 a Fn(\017)p Black 41 w Fr(SRFI)28 b(13)f({)g(String)g
(Library)p Black 415 702 a Fn(\017)p Black 41 w Fr(SRFI)h(14)f({)g
(Character-Set)f(Library)g(\(see)i(note)f(b)r(elo)n(w\))p
Black 415 882 a Fn(\017)p Black 41 w Fr(SRFI)h(16)f({)g(Syn)n(tax)g
(for)g(pro)r(cedures)g(of)g(v)-5 b(ariable)27 b(arit)n(y)p
Black 415 1061 a Fn(\017)p Black 41 w Fr(SRFI)h(17)f({)g(Generalized)g
Fo(set!)p Black 415 1240 a Fn(\017)p Black 41 w Fr(SRFI)h(19)f({)g
(Time)h(Data)f(T)n(yp)r(es)h(and)f(Pro)r(cedures)p Black
415 1420 a Fn(\017)p Black 41 w Fr(SRFI)h(22)f({)g(Running)h(Sc)n(heme)
f(Scripts)h(on)f(Unix)p Black 415 1599 a Fn(\017)p Black
41 w Fr(SRFI)h(23)f({)g(Error)e(rep)r(orting)i(mec)n(hanism)p
Black 415 1778 a Fn(\017)p Black 41 w Fr(SRFI)h(25)f({)g
(Multi-dimensional)g(Arra)n(y)f(Primitiv)n(es)p Black
415 1958 a Fn(\017)p Black 41 w Fr(SRFI)i(26)f({)g(Notation)g(for)g(Sp)
r(ecializing)h(P)n(arameters)d(without)j(Currying)p Black
415 2137 a Fn(\017)p Black 41 w Fr(SRFI)g(27)f({)g(Sources)g(of)g
(Random)g(Bits)p Black 415 2316 a Fn(\017)p Black 41
w Fr(SRFI)h(28)f({)g(Basic)g(F)-7 b(ormat)27 b(Strings)p
Black 415 2496 a Fn(\017)p Black 41 w Fr(SRFI)h(31)f({)g(A)h(sp)r
(ecial)f(form)h Fo(rec)e Fr(for)h(recursiv)n(e)f(ev)-5
b(aluation)p Black 415 2675 a Fn(\017)p Black 41 w Fr(SRFI)28
b(34)f({)g(Exception)g(Handling)g(for)h(Programs)p Black
415 2854 a Fn(\017)p Black 41 w Fr(SRFI)g(37)f({)g(args-fold:)35
b(a)27 b(program)f(argumen)n(t)g(pro)r(cessor)p Black
415 3034 a Fn(\017)p Black 41 w Fr(SRFI)i(40)f({)g(A)h(Library)e(of)i
(Streams)p Black 415 3213 a Fn(\017)p Black 41 w Fr(SRFI)g(42)f({)g
(Eager)f(Comprehensions)p Black 415 3392 a Fn(\017)p
Black 41 w Fr(SRFI)i(43)f({)g(V)-7 b(ector)27 b(library)p
Black 415 3572 a Fn(\017)p Black 41 w Fr(SRFI)h(45)f({)g(Primitiv)n(es)
g(for)g(Expressing)e(Iterativ)n(e)i(Lazy)g(Algorithms)p
Black 415 3751 a Fn(\017)p Black 41 w Fr(SRFI)h(60)f({)g(In)n(tegers)f
(as)h(Bits)p Black 415 3930 a Fn(\017)p Black 41 w Fr(SRFI)h(61)f({)g
(A)h(more)f(general)f(cond)h(clause)p Black 415 4110
a Fn(\017)p Black 41 w Fr(SRFI)h(62)f({)g(S-expression)f(commen)n(ts)p
Black 415 4289 a Fn(\017)p Black 41 w Fr(SRFI)i(63)f({)g(Homogeneous)f
(and)h(Heterogeneous)f(Arra)n(ys)p Black 415 4468 a Fn(\017)p
Black 41 w Fr(SRFI)i(66)f({)g(Octet)h(V)-7 b(ectors)p
Black 415 4648 a Fn(\017)p Black 41 w Fr(SRFI)28 b(67)f({)g(Compare)f
(Pro)r(cedures)p Black 415 4827 a Fn(\017)p Black 41
w Fr(SRFI)i(74)f({)g(Octet-Addressed)g(Binary)f(Blo)r(c)n(ks)p
Black 415 5006 a Fn(\017)p Black 41 w Fr(SRFI)i(78)f({)g(Ligh)n(t)n(w)n
(eigh)n(t)f(testing)p Black 1681 5255 a(81)p Black eop
end
%%Page: 82 90
TeXDict begin 82 89 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(Do)r(cumen)n(tation)28 b(on)f(these)g(can)h(b)r(e)g(found)
g(at)f(the)h(w)n(eb)f(site)h(men)n(tioned)g(ab)r(o)n(v)n(e.)863
623 y(SRFI)22 b(4)g(sp)r(eci\014es)f(an)g(external)g(represen)n(tation)
f(for)h(homogeneous)f(n)n(umeric)h(v)n(ectors)739 722
y(that)36 b(is)g(incompatible)g(with)h(R)1780 692 y Fk(5)1817
722 y Fr(RS.)g(The)f(Sc)n(heme)g(48)f(v)n(ersion)g(of)h(SRFI)h(4)e(do)r
(es)h(not)739 822 y(supp)r(ort)27 b(this)h(external)f(represen)n
(tation.)863 922 y(SRFI)d(14)d(includes)i(the)g(pro)r(cedure)e
Fo(->char-set)e Fr(whic)n(h)j(is)h(not)g(a)f(standard)f(Sc)n(heme)739
1021 y(iden)n(ti\014er)i(\(in)g(R)1268 991 y Fk(5)1306
1021 y Fr(RS)g(the)g(only)g(required)f(iden)n(ti\014er)h(starting)f
(with)h Fo(-)g Fr(is)g Fo(-)f Fr(itself)6 b(\).)37 b(In)23
b(the)739 1121 y(Sc)n(heme)k(48)g(v)n(ersion)f(of)i(SRFI)g(14)e(w)n(e)i
(ha)n(v)n(e)e(renamed)h Fo(->char-set)d Fr(as)j Fo(x->char-set)p
Fr(.)863 1220 y(SRFI)j(bindings)f(can)f(b)r(e)i(accessed)d(either)i(b)n
(y)g(op)r(ening)f(the)i(appropriate)d(structure)739 1320
y(\(the)20 b(structure)f Fo(srfi-)p Fq(n)k Fr(con)n(tains)18
b(SRFI)i Fq(n)6 b Fr(\))20 b(or)e(b)n(y)i(loading)e(structure)h
Fo(srfi-7)e Fr(and)i(then)739 1420 y(using)29 b(the)h
Fo(,load-srfi-7-prog)o(ram)23 b Fr(command)29 b(to)h(load)f(an)g(SRFI)i
(7-st)n(yle)d(program.)739 1519 y(The)g(syn)n(tax)e(for)h(the)h
(command)f(is)p Black Black 739 1685 a Fo(,load-srfi-7-pro)o(gr)o(am)37
b Fq(name)50 b(\014lename)739 1851 y Fr(This)19 b(creates)e(a)h(new)h
(structure)f(and)h(asso)r(ciated)e(pac)n(k)-5 b(age,)19
b(binds)g(the)g(structure)f(to)h Fq(name)739 1951 y Fr(in)k(the)g
(con\014guration)f(pac)n(k)-5 b(age,)22 b(and)h(then)g(loads)f(the)i
(program)c(found)k(in)f Fq(\014lename)29 b Fr(in)n(to)739
2051 y(the)f(pac)n(k)-5 b(age.)863 2150 y(As)28 b(an)f(example,)h(if)g
(the)g(\014le)g Fo(test.scm)c Fr(con)n(tains)p Black
Black 739 2316 a Fo(\(program)40 b(\(code)i(\(define)e(x)k(10\)\)\))739
2482 y Fr(this)28 b(program)d(can)j(b)r(e)g(loaded)e(as)h(follo)n(ws:)p
Black Black 739 2648 a Fo(>)43 b(,load-package)38 b(srfi-7)739
2748 y(>)43 b(,load-srfi-7-pro)o(gra)o(m)37 b(test)42
b(test.scm)739 2848 y([test])739 2947 y(>)h(,in)f(test)739
3047 y(test>)f(x)739 3147 y(10)739 3246 y(test>)p Black
2130 5255 a Fr(82)p Black eop end
%%Page: 83 91
TeXDict begin 83 90 bop 0 TeXcolorgray Black Black Black
291 1162 a Fl(Chapter)64 b(6)291 1594 y Fp(Unico)6 b(de)291
2042 y Fr(Sc)n(heme)35 b(48)g(fully)h(supp)r(orts)f(ISO)g(10646)f
(\(Unico)r(de\):)53 b(Sc)n(heme)36 b(c)n(haracters)d(represen)n(t)291
2142 y(Unico)r(de)k(scalar)e(v)-5 b(alues,)39 b(and)d(Sc)n(heme)h
(strings)f(are)g(arra)n(ys)e(of)j(scalar)e(v)-5 b(alues.)64
b(More)291 2241 y(information)27 b(on)g(Unico)r(de)h(can)f(b)r(e)h
(found)g(at)f Fo(http://www.unicod)o(e.)o(org)o(/)p Fr(.)291
2603 y Fj(6.1)135 b(Characters)46 b(and)e(their)i(co)t(des)291
2816 y Fr(Sc)n(heme)18 b(48)f(in)n(ternally)h(represen)n(ts)f(c)n
(haracters)f(as)i(Unico)r(de)g(scalar)f(v)-5 b(alues.)33
b(The)19 b Fo(unicode)291 2915 y Fr(structure)25 b(con)n(tains)h(pro)r
(cedures)f(for)h(con)n(v)n(erting)e(b)r(et)n(w)n(een)j(c)n(haracters)d
(and)i(scalar)e(v)-5 b(al-)291 3015 y(ues:)p Black 307
3231 a Fn(\017)p Black 41 w Fo(\(char->scalar-val)o(ue)35
b Fq(char)9 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p Black
307 3330 a Fn(\017)p Black 41 w Fo(\(scalar-value->ch)o(ar)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)g Fq(char)p Black
307 3430 a Fn(\017)p Black 41 w Fo(\(scalar-value?)j
Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)291
3645 y Fo(Char->scalar-va)o(lue)12 b Fr(returns)17 b(the)i(scalar)e(v)
-5 b(alue)18 b(of)g(a)g(c)n(haracter,)g(and)h Fo(scalar-value->c)o(har)
291 3745 y Fr(con)n(v)n(erts)25 b(in)h(the)h(other)g(direction.)36
b Fo(Scalar-value->c)o(har)20 b Fr(signals)25 b(an)i(error)e(if)i
(passed)291 3845 y(an)g(in)n(teger)g(that)g(is)h(not)g(a)f(scalar)f(v)
-5 b(alue.)415 3961 y(Note)28 b(that)g(the)g(Unico)r(de)f(scalar)f(v)-5
b(alue)28 b(range)e(is)1032 4176 y([0)p Fc(;)14 b Fr(#)p
Fc(x)p Fq(D7FF)d Fr(])19 b Fn([)g Fr([#)p Fc(x)p Fq(E000)13
b Fc(;)h Fr(#)p Fc(x)p Fq(10FFFF)g Fr(])291 4392 y(In)26
b(particular,)f(this)i(excludes)f(the)g(surrogates,)e(whic)n(h)i
(UTF-16)g(uses)f(to)i(enco)r(de)f(scalar)291 4492 y(v)-5
b(alues)25 b(with)i(t)n(w)n(o)f(16-bit)f(w)n(ords.)35
b(Note)27 b(that)f(this)h(represen)n(tation)d(di\013ers)i(from)g(that)h
(of)291 4591 y(Ja)n(v)-5 b(a,)21 b(whic)n(h)g(uses)g(UTF-16)f(co)r(de)h
(units)g(as)g(the)g(c)n(haracter)f(represen)n(tation|Sc)n(heme)f(48)291
4691 y(e\013ectiv)n(ely)25 b(uses)h(UTF-32,)f(and)h(is)f(th)n(us)h(in)g
(line)g(with)g(other)f(Sc)n(heme)h(implemen)n(tations)291
4790 y(and)h(the)h(curren)n(t)f(Unico)r(de)h(prop)r(osal)e(for)h(R)1730
4760 y Fk(6)1767 4790 y Fr(RS,)h(as)f(set)h(forth)f(in)h(SRFI)g(75.)415
4907 y(The)21 b(R)640 4876 y Fk(5)678 4907 y Fr(RS)g(pro)r(cedures)f
Fo(char->integer)c Fr(and)21 b Fo(integer->char)15 b
Fr(are)20 b(synon)n(yms)g(for)291 5006 y Fo(char->scalar-va)o(lue)h
Fr(and)27 b Fo(scalar-value->cha)o(r)p Fr(,)22 b(resp)r(ectiv)n(ely)-7
b(.)p Black 1681 5255 a(83)p Black eop end
%%Page: 84 92
TeXDict begin 84 91 bop 0 TeXcolorgray Black Black Black
739 523 a Fj(6.2)135 b(Character)46 b(and)f(string)g(literals)739
705 y Fr(The)f(syn)n(tax)f(sp)r(eci\014ed)h(here)g(is)g(in)g(line)h
(with)f(the)h(curren)n(t)e(Unico)r(de)h(prop)r(osal)f(for)739
805 y(R)800 774 y Fk(6)837 805 y Fr(RS,)31 b(as)e(set)h(forth)g(in)g
(SRFI)h(75,)f(except)g(for)f(case-sensitivit)n(y)-7 b(.)43
b(\(Sc)n(heme)30 b(48)f(is)h(case-)739 904 y(insensitiv)n(e.\))739
1136 y Fe(6.2.1)112 b(Character)38 b(literals)739 1289
y Fr(The)24 b(follo)n(wing)e(c)n(haracter)g(names)h(are)f(a)n(v)-5
b(ailable)23 b(in)h(addition)f(to)h(what)f(R)3111 1259
y Fk(5)3149 1289 y Fr(RS)h(pro)n(vides:)p Black 863 1451
a Fn(\017)p Black 41 w Fo(#\\nul)i Fr(\(ASCI)r(I)j(0\))p
Black 863 1616 a Fn(\017)p Black 41 w Fo(#\\alarm)c Fr(\(ASCI)r(I)k
(7\))p Black 863 1780 a Fn(\017)p Black 41 w Fo(#\\backspace)24
b Fr(\(ASCI)r(I)k(8\))p Black 863 1944 a Fn(\017)p Black
41 w Fo(#\\tab)e Fr(\(ASCI)r(I)j(9\))p Black 863 2109
a Fn(\017)p Black 41 w Fo(#\\vtab)d Fr(\(ASCI)r(I)i(11\))p
Black 863 2273 a Fn(\017)p Black 41 w Fo(#\\page)e Fr(\(ASCI)r(I)i
(12\))p Black 863 2437 a Fn(\017)p Black 41 w Fo(#\\return)d
Fr(\(ASCI)r(I)j(13\))p Black 863 2601 a Fn(\017)p Black
41 w Fo(#\\esc)e Fr(\(ASCI)r(I)j(27\))p Black 863 2766
a Fn(\017)p Black 41 w Fo(#\\rubout)c Fr(\(ASCI)r(I)j(127\))p
Black 863 2930 a Fn(\017)p Black 41 w Fo(#\\x)p Fn(h)p
Fr(x)p Fn(ih)p Fr(x)p Fn(i)p Fr(.)14 b(.)g(.)62 b(hex,)33
b(explicitly)e(or)g(implicitly)h(delimited,)h(where)e
Fn(h)p Fr(x)p Fn(i)q(h)p Fr(x)p Fn(i)p Fr(.)14 b(.)g(.)62
b(de-)946 3029 y(notes)28 b(the)g(scalar)e(v)-5 b(alue)27
b(of)h(the)g(c)n(haracter)739 3261 y Fe(6.2.2)112 b(String)38
b(literals)739 3414 y Fr(The)f(follo)n(wing)f(escap)r(e)g(c)n
(haracters)f(in)i(string)f(literals)h(are)f(a)n(v)-5
b(ailable)35 b(in)j(addition)e(to)739 3514 y(what)27
b(R)1007 3484 y Fk(5)1045 3514 y Fr(RS)h(pro)n(vides:)p
Black 863 3692 a Fn(\017)p Black 41 w Fo(\\a)p Fr(:)37
b(alarm)26 b(\(ASCI)r(I)j(7\))p Black 863 3856 a Fn(\017)p
Black 41 w Fo(\\b)p Fr(:)37 b(bac)n(kspace)25 b(\(ASCI)r(I)k(8\))p
Black 863 4021 a Fn(\017)p Black 41 w Fo(\\t)p Fr(:)37
b(tab)27 b(\(ASCI)r(I)i(9\))p Black 863 4185 a Fn(\017)p
Black 41 w Fo(\\n)p Fr(:)37 b(linefeed)28 b(\(ASCI)r(I)g(10\))p
Black 863 4349 a Fn(\017)p Black 41 w Fo(\\v)p Fr(:)37
b(v)n(ertical)26 b(tab)i(\(ASCI)r(I)g(11\))p Black 863
4513 a Fn(\017)p Black 41 w Fo(\\f)p Fr(:)37 b(formfeed)27
b(\(ASCI)r(I)i(12\))p Black 863 4678 a Fn(\017)p Black
41 w Fo(\\r)p Fr(:)37 b(return)27 b(\(ASCI)r(I)h(13\))p
Black 863 4842 a Fn(\017)p Black 41 w Fo(\\e)p Fr(:)37
b(escap)r(e)27 b(\(ASCI)r(I)h(27\))p Black 863 5006 a
Fn(\017)p Black 41 w Fo(\\')p Fr(:)37 b(quote)27 b(\(ASCI)r(I)h(39,)f
(same)g(as)g(unquoted\))p Black 2130 5255 a(84)p Black
eop end
%%Page: 85 93
TeXDict begin 85 92 bop 0 TeXcolorgray Black Black Black
Black 415 523 a Fn(\017)p Black 41 w Fo(\\)p Fn(h)p Fr(newline)p
Fn(ih)p Fr(in)n(traline)28 b(whitespace)p Fn(i)p Fr(:)33
b(elided)20 b(\(allo)n(ws)e(a)i(single-line)f(string)g(to)g(span)498
623 y(source)27 b(lines\))p Black 415 795 a Fn(\017)p
Black 41 w Fo(\\x)p Fn(h)p Fr(x)p Fn(ih)p Fr(x)p Fn(i)p
Fr(.)14 b(.)g(.)g Fo(;)19 b Fr(hex,)h(where)f Fn(h)p
Fr(x)p Fn(ih)p Fr(x)p Fn(i)q Fr(.)14 b(.)g(.)48 b(denotes)18
b(the)i(scalar)d(v)-5 b(alue)19 b(of)g(the)h(c)n(haracter)291
1036 y Fe(6.2.3)112 b(Iden)m(ti\014ers)38 b(and)g(sym)m(b)s(ol)h
(literals)291 1192 y Fr(Where)21 b(R)611 1162 y Fk(5)648
1192 y Fr(RS)g(allo)n(ws)f(a)h Fn(h)p Fr(letter)p Fn(i)p
Fr(,)i(Sc)n(heme)e(48)f(allo)n(ws)g(in)h(addition)g(an)n(y)g(c)n
(haracter)e(whose)291 1292 y(scalar)27 b(v)-5 b(alue)29
b(is)h(greater)d(than)i(127)f(and)h(whose)g(Unico)r(de)h(general)d
(category)h(is)h(Lu,)h(Ll,)291 1391 y(Lt,)d(Lm,)h(Lo,)f(Mn,)h(Mc,)g
(Me,)g(Nd,)g(Nl,)g(No,)g(Pd,)f(Pc,)g(P)n(o,)g(Sc,)g(Sm,)h(Sk,)g(So,)f
(or)g(Co.)415 1493 y(Moreo)n(v)n(er,)18 b(when)h(a)g(bac)n(kslash)e
(app)r(ears)h(in)h(a)g(sym)n(b)r(ol,)h(it)g(m)n(ust)f(start)f(a)h
Fo(\\x)p Fn(h)p Fr(x)p Fn(i)o(h)p Fr(x)p Fn(i)q Fr(.)13
b(.)h(.)g Fo(;)291 1592 y Fr(escap)r(e,)31 b(whic)n(h)g(iden)n
(ti\014es)g(an)g(arbitrary)e(c)n(haracter)g(to)i(include)g(in)h(the)f
(sym)n(b)r(ol.)47 b(Note)291 1692 y(that)27 b(a)h(bac)n(kslash)e
(itself)i(can)f(b)r(e)h(sp)r(eci\014ed)g(as)f Fo(\\x5C;)p
Fr(.)291 1975 y Fj(6.3)135 b(Character)46 b(classi\014cation)g(and)f
(case)g(mappings)291 2160 y Fr(The)18 b(R)513 2129 y
Fk(5)550 2160 y Fr(RS)h(c)n(haracter)d(predicates|)p
Fo(char-whitespace)o(?)p Fr(,)e Fo(char-lower-case?)p
Fr(,)g Fo(char-upper-case?)o Fr(,)291 2259 y Fo(char-numeric?)p
Fr(,)22 b(and)27 b Fo(char-alphabetic?)p Fr(|a)o(ll)22
b(treat)27 b(the)h(full)h(Unico)r(de)e(range.)415 2360
y Fo(Char-upcase)14 b Fr(and)k Fo(char-downcase)13 b
Fr(as)18 b(w)n(ell)g(as)g Fo(char-ci=?)p Fr(,)e Fo(char-ci<?)p
Fr(,)h Fo(char-ci<=?)p Fr(,)291 2460 y Fo(char-ci>?)p
Fr(,)f Fo(char-ci>=?)p Fr(,)g Fo(string-ci=?)p Fr(,)g
Fo(string-ci<?)p Fr(,)g Fo(string-ci>?)p Fr(,)g Fo(string-ci<=?)p
Fr(,)291 2560 y Fo(string-ci>=?)32 b Fr(all)27 b(use)g(the)h(standard)f
(simple)g(lo)r(cale-insensitiv)n(e)g(Unico)r(de)g(case)g(fold-)291
2659 y(ing.)415 2761 y(In)e(addition,)g(Sc)n(heme)g(48)e(pro)n(vides)h
(the)h Fo(unicode-char-map)o(s)18 b Fr(structure)25 b(for)f(more)291
2860 y(complete)29 b(access)g(to)h(the)g(Unico)r(de)g(c)n(haracter)e
(classi\014cation)h(with)h(the)g(follo)n(wing)f(pro-)291
2960 y(cedures)d(and)i(macros:)p Black 307 3131 a Fn(\017)p
Black 41 w Fo(\(general-category)35 b Fq(gener)l(al-c)l(ate)l
(gory-name)6 b Fo(\))28 b Fn(!)g Fq(gener)l(al-c)l(ate)l(gory)174
b Fr(syn)n(tax)p Black 307 3230 a Fn(\017)p Black 41
w Fo(\(general-category)o(?)44 b Fq(x)10 b Fo(\))40 b
Fn(!)i Fq(b)l(o)l(ole)l(an)p Black 307 3330 a Fn(\017)p
Black 41 w Fo(\(general-category)o(-i)o(d)35 b Fq(gener)l(al-c)l(ate)l
(gory)7 b Fo(\))43 b Fn(!)f Fq(string)p Black 307 3430
a Fn(\017)p Black 41 w Fo(\(char-general-cat)o(eg)o(ory)35
b Fq(char)9 b Fo(\))42 b Fn(!)f Fq(gener)l(al-c)l(ate)l(gory)291
3600 y Fr(The)25 b(syn)n(tax)e Fo(general-category)c
Fr(returns)24 b(a)g(Unico)r(de)i(general)d(category)g(ob)5
b(ject)25 b(asso-)291 3700 y(ciated)18 b(with)h Fq(gener)l(al-c)l(ate)l
(gory-name)6 b Fr(.)35 b(\(See)19 b(Figure)p 0 0 1 TeXcolorrgb
17 w(6.1)p Black 18 w(b)r(elo)n(w.\))34 b Fo(General-categor)o(y?)291
3800 y Fr(is)21 b(the)h(predicate)f(for)g(general-category)d(ob)5
b(jects.)34 b Fo(General-category)o(-id)15 b Fr(returns)21
b(the)291 3899 y(Unico)r(de)d(category)f(id)h(as)g(a)g(string)g(\(also)
f(listed)i(in)f(Figure)p 0 0 1 TeXcolorrgb 18 w(6.1)p
Black(\).)33 b Fo(Char-general-cate)o(gor)o(y)291 3999
y Fr(returns)26 b(the)i(general)f(category)e(of)j(a)f(c)n(haracter.)p
Black 307 4153 a Fn(\017)p Black 41 w Fo(\(general-category)o(-p)o(rim)
o(ar)o(y-)o(cat)o(eg)o(ory)35 b Fq(gener)l(al-c)l(ate)l(gory)7
b Fo(\))42 b Fn(!)g Fq(primary-c)l(ate)l(gory)p Black
307 4253 a Fn(\017)p Black 41 w Fo(\(primary-category)35
b Fq(primary-c)l(ate)l(gory-name)6 b Fo(\))29 b Fn(!)f
Fq(primary-c)l(ate)l(gory)109 b Fr(syn)n(tax)p Black
307 4352 a Fn(\017)p Black 41 w Fo(\(primary-category)o(?)44
b Fq(x)10 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)291
4507 y Fo(General-categor)o(y-p)o(ri)o(ma)o(ry-)o(ca)o(teg)o(or)o(y)25
b Fr(maps)31 b(the)g(general)f(category)f(to)h(its)i(asso-)291
4606 y(ciated)40 b(primary)g(category|also)e(listed)j(in)g(Figure)p
0 0 1 TeXcolorrgb 40 w(6.1)p Black(.)76 b(The)40 b Fo(primary-category)
291 4706 y Fr(syn)n(tax)32 b(returns)h(the)g(primary-category)d(ob)5
b(ject)33 b(asso)r(ciated)f(with)i Fq(primary-c)l(ate)l(gory-)291
4805 y(name)6 b Fr(.)37 b Fo(Primary-category)o(?)31
b Fr(is)c(the)h(predicate)f(for)g(primary-category)d(ob)5
b(jects.)415 4907 y(The)37 b Fo(unicode-char-ma)o(ps)30
b Fr(pro)r(cedure)36 b(also)f(pro)n(vides)g(the)i(follo)n(wing)e
(additional)291 5006 y(case-mapping)26 b(pro)r(cedures)g(for)h(c)n
(haracters:)p Black 1681 5255 a(85)p Black eop end
%%Page: 86 94
TeXDict begin 86 93 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(char-titlecase)o(?)44
b Fq(char)9 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 755 623 a Fn(\017)p Black 42 w Fo(\(char-titlecase)35
b Fq(char)9 b Fo(\))42 b Fn(!)f Fq(char)p Black 755 722
a Fn(\017)p Black 42 w Fo(\(char-foldcase)35 b Fq(char)9
b Fo(\))42 b Fn(!)g Fq(char)739 918 y Fo(Char-titlecase?)d
Fr(tests)31 b(if)g(a)f(c)n(haracter)f(is)h(in)h(titlecase.)45
b Fo(Char-titlecase)25 b Fr(returns)739 1017 y(the)39
b(titlecase)f(coun)n(terpart)g(of)g(a)g(c)n(haracter.)68
b Fo(Char-foldcase)34 b Fr(folds)k(the)h(case)f(of)h(a)739
1117 y(c)n(haracter,)24 b(i.e.)i(maps)f(it)h(to)f(upp)r(ercase)g
(\014rst,)h(then)g(to)g(lo)n(w)n(ercase.)33 b(The)26
b(follo)n(wing)e(case-)739 1217 y(mapping)j(pro)r(cedures)g(on)g
(strings)g(are)f(a)n(v)-5 b(ailable:)p Black 755 1412
a Fn(\017)p Black 42 w Fo(\(string-upcase)35 b Fq(string)7
b Fo(\))42 b Fn(!)f Fq(string)p Black 755 1512 a Fn(\017)p
Black 42 w Fo(\(string-downcas)o(e)35 b Fq(string)7 b
Fo(\))42 b Fn(!)f Fq(string)p Black 755 1611 a Fn(\017)p
Black 42 w Fo(\(string-titleca)o(se)35 b Fq(string)7
b Fo(\))41 b Fn(!)h Fq(string)p Black 755 1711 a Fn(\017)p
Black 42 w Fo(\(string-foldcas)o(e)35 b Fq(string)7 b
Fo(\))42 b Fn(!)f Fq(string)739 1906 y Fr(These)27 b(implemen)n(t)g
(the)h(simple)f(case)f(mappings)h(de\014ned)g(b)n(y)g(the)h(Unico)r(de)
f(standard|)739 2006 y(note)c(that)g(the)g(length)g(of)g(the)g(output)h
(string)e(ma)n(y)g(b)r(e)i(di\013eren)n(t)f(from)f(that)h(of)g(the)g
(input)739 2105 y(string.)739 2432 y Fj(6.4)135 b(SRFI)45
b(14)739 2632 y Fr(The)35 b(SRFI)h(14)e(\(\\Character)f(Sets"\))i
(implemen)n(tation)g(in)h(the)f Fo(srfi-14)e Fr(structure)h(is)739
2731 y(fully)28 b(Unico)r(de-complian)n(t.)739 3058 y
Fj(6.5)135 b(R6RS)739 3258 y Fr(The)25 b Fo(r6rs-unicode)20
b Fr(structure)25 b(exp)r(orts)f(the)i(pro)r(cedures)e(from)g(the)i
Fo(\(r6rs)41 b(unicode\))739 3357 y Fr(library)26 b(of)i(5.91)e(draft)h
(of)h(R)1640 3327 y Fk(6)1677 3357 y Fr(RS)g(that)g(are)f(not)g
(already)f(in)i(the)g Fo(scheme)e Fr(structure:)p Black
Black 739 3589 a Fo(string-normalize)o(-n)o(fd)739 3689
y(string-normalize)o(-n)o(fkd)739 3788 y(string-normalize)o(-n)o(fc)739
3888 y(string-normalize)o(-n)o(fkc)739 3987 y(char-titlecase)739
4087 y(char-title-case?)739 4187 y(char-foldcase)739
4286 y(string-upcase)739 4386 y(string-downcase)739 4486
y(string-foldcase)739 4585 y(string-titlecase)739 4807
y Fr(The)21 b Fo(r6rs-unicode)16 b Fr(structure)21 b(also)f(exp)r(orts)
g(a)h Fo(char-general-cat)o(eg)o(or)o(y)15 b Fr(pro)r(cedure)739
4907 y(compatible)32 b(with)g(the)g Fo(\(r6rs)42 b(unicode\))28
b Fr(library)-7 b(.)49 b(Note)32 b(that,)h(as)e(Sc)n(heme)h(48)f
(treats)739 5006 y(source)26 b(co)r(de)i(case-insensitiv)n(ely)-7
b(,)26 b(the)i(sym)n(b)r(ols)e(it)i(returns)f(are)g(all-lo)n(w)n
(ercase.)p Black 2130 5255 a(86)p Black eop end
%%Page: 87 95
TeXDict begin 87 94 bop 0 TeXcolorgray Black Black Black
291 530 a Fj(6.6)135 b(I/O)291 714 y Fr(P)n(orts)39 b(m)n(ust)i(enco)r
(de)g(an)n(y)f(text)h(a)g(program)e(writes)i(to)f(an)h(output)h(p)r
(ort)f(to)f(a)h(b)n(yte)291 814 y(sequence,)h(and)d(con)n(v)n(ersely)e
(deco)r(de)i(b)n(yte)h(sequences)e(when)i(a)f(program)e(reads)i(text)
291 914 y(from)f(an)g(input)i(p)r(ort.)69 b(Therefore,)41
b(eac)n(h)d(p)r(ort)g(has)g(an)g(asso)r(ciated)g Fq(text)h(c)l(o)l(de)l
(c)44 b Fr(that)291 1013 y(describ)r(es)27 b(ho)n(w)g(enco)r(de)g(and)g
(deco)r(de)h(text.)415 1114 y(Note)j(that)g(the)g(in)n(terface)f(to)g
(the)h(text)g(co)r(dec)g(functionalit)n(y)f(is)h(exp)r(erimen)n(tal)f
(and)291 1214 y(v)n(ery)c(lik)n(ely)h(to)h(c)n(hange)e(in)i(the)g
(future.)291 1455 y Fe(6.6.1)112 b(T)-9 b(ext)37 b(co)s(decs)291
1611 y Fr(The)27 b Fo(i/o)g Fr(structure)g(de\014nes)g(the)h(follo)n
(wing)f(pro)r(cedures:)p Black 307 1782 a Fn(\017)p Black
41 w Fo(\(port-text-codec)35 b Fq(p)l(ort)8 b Fo(\))41
b Fn(!)h Fq(text-c)l(o)l(de)l(c)p Black 307 1881 a Fn(\017)p
Black 41 w Fo(\(set-port-text-co)o(de)o(c!)35 b Fq(p)l(ort)42
b(text-c)l(o)l(de)l(c)5 b Fo(\))291 2052 y Fr(These)34
b(t)n(w)n(o)f(pro)r(cedures)h(retriev)n(e)f(and)h(set)g(the)h(text)g
(co)r(dec)f(asso)r(ciated)f(with)i(a)f(p)r(ort,)291 2152
y(resp)r(ectiv)n(ely)-7 b(.)36 b(A)27 b(program)e(can)i(set)h(text)f
(co)r(dec)g(of)h(a)e(p)r(ort)i(at)f(an)n(y)f(time,)i(ev)n(en)f(if)h(it)
f(has)291 2251 y(already)f(p)r(erformed)h(I/O)g(on)g(the)h(p)r(ort.)415
2352 y(The)g Fo(text-codecs)23 b Fr(structure)k(de\014nes)h(the)g
(follo)n(wing)e(pro)r(cedures)g(and)i(macros:)p Black
307 2506 a Fn(\017)p Black 41 w Fo(\(text-codec?)45 b
Fq(x)10 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black
307 2606 a Fn(\017)p Black 41 w Fo(null-text-codec)1731
b Fr(text-co)r(dec)p Black 307 2706 a Fn(\017)p Black
41 w Fo(us-ascii-codec)1775 b Fr(text-co)r(dec)p Black
307 2805 a Fn(\017)p Black 41 w Fo(latin-1-codec)1819
b Fr(text-co)r(dec)p Black 307 2905 a Fn(\017)p Black
41 w Fo(utf-8-codec)1907 b Fr(text-co)r(dec)p Black 307
3005 a Fn(\017)p Black 41 w Fo(utf-16le-codec)1775 b
Fr(text-co)r(dec)p Black 307 3104 a Fn(\017)p Black 41
w Fo(utf-16be-codec)g Fr(text-co)r(dec)p Black 307 3204
a Fn(\017)p Black 41 w Fo(utf-32le-codec)g Fr(text-co)r(dec)p
Black 307 3303 a Fn(\017)p Black 41 w Fo(utf-32be-codec)g
Fr(text-co)r(dec)p Black 307 3403 a Fn(\017)p Black 41
w Fo(\(find-text-codec)35 b Fq(string)7 b Fo(\))41 b
Fn(!)h Fq(text-c)l(o)l(de)l(c)f(or)h Fo(#f)291 3557 y(Text-codec?)62
b Fr(is)38 b(the)g(predicate)f(for)g(text)h(co)r(decs.)66
b Fo(Null-text-codec)32 b Fr(is)37 b(primar-)291 3657
y(ily)f(mean)n(t)h(for)f(n)n(ull)h(p)r(orts)f(that)h(nev)n(er)f(yield)h
(input)g(and)g(sw)n(allo)n(w)e(all)h(output.)65 b(The)291
3756 y(follo)n(wing)28 b(text)i(co)r(decs)f(implemen)n(t)h(the)g
(US-ASCI)r(I,)g(Latin-1,)f(Unico)r(de)h(UTF-8,)g(Uni-)291
3856 y(co)r(de)35 b(UTF-16)h(\(little-endian\),)j(Unico)r(de)d(UTF-16)f
(\(big-endian\),)j(Unico)r(de)f(UTF-32)291 3956 y(\(little-endian\),)28
b(Unico)r(de)g(UTF-32)f(\(big-endian\))g(enco)r(dings,)g(resp)r(ectiv)n
(ely)-7 b(.)415 4057 y Fo(Find-text-codec)26 b Fr(\014nds)31
b(the)h(co)r(dec)g(asso)r(ciated)e(with)i(an)f(enco)r(ding)g(name.)49
b(The)291 4156 y(names)22 b(of)h(the)g(ab)r(o)n(v)n(e)f(enco)r(dings)g
(are)g Fo("null")p Fr(,)f Fo("US-ASCII")p Fr(,)f Fo("ISO8859-1")p
Fr(,)g Fo("UTF-8")p Fr(,)291 4256 y Fo("UTF-16LE")p Fr(,)j
Fo("UTF-16BE")p Fr(,)h Fo("UTF-32LE")p Fr(,)f(and)28
b Fo("UTF-32BE")p Fr(,)23 b(resp)r(ectiv)n(ely)-7 b(.)291
4497 y Fe(6.6.2)112 b(T)-9 b(ext-co)s(dec)37 b(utilities)291
4653 y Fr(The)32 b Fo(text-codec-utils)26 b Fr(structure)32
b(exp)r(orts)g(a)g(few)h(utilities)g(for)g(dealing)e(with)j(text)291
4753 y(co)r(decs:)p Black 307 4907 a Fn(\017)p Black
41 w Fo(\(guess-port-text-)o(co)o(dec)o(-a)o(cc)o(ord)o(in)o(g-t)o(o-)o
(bo)o(m)i Fq(p)l(ort)8 b Fo(\))41 b Fn(!)g Fq(text-c)l(o)l(de)l(c)g(or)
h Fo(#f)p Black 307 5006 a Fn(\017)p Black 41 w Fo(\(set-port-text-co)o
(de)o(c-a)o(cc)o(or)o(din)o(g-)o(to-)o(bo)o(m!)h Fq(p)l(ort)8
b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 1681
5255 a Fr(87)p Black eop end
%%Page: 88 96
TeXDict begin 88 95 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(These)23 b(pro)r(cedures)g(lo)r(ok)g(at)g(the)h(b)n
(yte-order-mark)d(\(also)i(called)g(the)h(\\BOM",)e Fo(U+FEFF)p
Fr(\))739 623 y(at)f(the)g(b)r(eginning)g(of)f(a)h(p)r(ort)f(and)h
(guess)f(the)h(appropriate)e(text)i(co)r(dec.)35 b(This)21
b(w)n(orks)e(only)739 722 y(for)f(UTF-16)f(\(little-endian)i(and)f
(big-endian\))g(and)h(UTF-8.)33 b Fo(Guess-port-text-)o(cod)o(ec)o(-ac)
o(co)o(rd)o(ing)o(-t)o(o-b)o(om)739 822 y Fr(returns)26
b(the)i(text)f(co)r(dec,)g(or)g Fo(#f)f Fr(if)i(it)f(found)h(no)f
(UTF-16)f(or)g(UTF-8)h(BOM.)g(Note)g(that)739 922 y(this)i(actually)g
(reads)f(from)h(the)g(p)r(ort.)42 b(If)29 b(the)h(guess)e(do)r(es)h
(not)g(succeed,)h(it)f(is)g(probably)739 1021 y(a)j(go)r(o)r(d)h(idea)f
(to)h(re-op)r(en)f(the)h(p)r(ort.)52 b Fo(Set-port-text-cod)o(ec-)o(ac)
o(cor)o(di)o(ng)o(-to)o(-b)o(om!)739 1121 y Fr(calls)28
b Fo(guess-port-text-c)o(od)o(ec)o(-ac)o(co)o(rdi)o(ng)o(-to)o(-b)o(om)
o Fr(,)c(sets)k(the)i(p)r(ort)e(text)i(co)r(dec)e(to)739
1220 y(the)i(result)e(if)i(successful)f(and)g(returns)g
Fo(#t)p Fr(.)41 b(If)29 b(it)h(is)f(not)g(successful,)h(it)g(returns)e
Fo(#f)p Fr(.)41 b(As)739 1320 y(with)e Fo(guess-port-text-c)o(ode)o(c-)
o(acc)o(or)o(di)o(ng-)o(to)o(-bo)o(m)p Fr(,)d(this)j(reads)f(from)h
(the)g(p)r(ort,)739 1420 y(whether)27 b(successful)h(or)e(not.)739
1661 y Fe(6.6.3)112 b(Creating)38 b(text)f(co)s(decs)p
Black 755 1816 a Fn(\017)p Black 42 w Fo(\(make-text-code)o(c)e
Fq(strings)42 b(enc)l(o)l(de-pr)l(o)l(c)g(de)l(c)l(o)l(de-pr)l(o)l(c)5
b Fo(\))42 b Fn(!)g Fq(text-c)l(o)l(de)l(c)p Black 755
1916 a Fn(\017)p Black 42 w Fo(\(text-codec-nam)o(es)35
b Fq(text-c)l(o)l(de)l(c)5 b Fo(\))40 b Fn(!)i Fq(list)f(of)i(strings)p
Black 755 2015 a Fn(\017)p Black 42 w Fo(\(text-codec-enc)o(od)o(e-c)o
(ha)o(r-p)o(ro)o(c)35 b Fq(text-c)l(o)l(de)l(c)5 b Fo(\))41
b Fn(!)83 b Fq(enc)l(o)l(de-pr)l(o)l(c)p Black 755 2115
a Fn(\017)p Black 42 w Fo(\(text-codec-dec)o(od)o(e-c)o(ha)o(r-p)o(ro)o
(c)35 b Fq(text-c)l(o)l(de)l(c)5 b Fo(\))41 b Fn(!)83
b Fq(de)l(c)l(o)l(de-pr)l(o)l(c)p Black 755 2214 a Fn(\017)p
Black 42 w Fo(\(define-text-co)o(de)o(c)36 b Fq(id)51
b(name)d(enc)l(o)l(de-pr)l(o)l(c)f(de)l(c)l(o)l(de-pr)l(o)l(c)5
b Fo(\))420 b Fr(syn)n(tax)p Black 755 2314 a Fn(\017)p
Black 42 w Fo(\(define-text-co)o(de)o(c)36 b Fq(id)51
b Fo(\()p Fq(name)c Fo(...\))84 b Fq(enc)l(o)l(de-pr)l(o)l(c)47
b(de)l(c)l(o)l(de-pr)l(o)l(c)5 b Fo(\))117 b Fr(syn)n(tax)739
2469 y Fo(Make-text-codec)34 b Fr(constructs)39 b(a)g(text)i(co)r(dec)e
(from)h(a)f(list)i(of)e(names,)k(and)d(an)f(en-)739 2568
y(co)r(de)h(and)f(a)h(deco)r(de)f(pro)r(cedure.)73 b(\(See)40
b(b)r(elo)n(w)g(on)f(ho)n(w)h(to)f(construct)h(enco)r(de)f(and)739
2668 y(deco)r(de)26 b(pro)r(cedures.\))36 b Fo(Text-codec-names)o
Fr(,)22 b Fo(text-codec-enco)o(de)o(-ch)o(ar)o(-pr)o(oc)o
Fr(,)f(and)739 2768 y Fo(text-codec-decod)o(e-)o(cha)o(r-)o(pro)o(c)12
b Fr(are)18 b(the)g(accessors)e(for)i(text)h(co)r(dec.)33
b(The)19 b Fo(define-text-code)o(c)739 2867 y Fr(is)24
b(a)g(shorthand)g(for)g(binding)h(a)f(global)f(iden)n(ti\014er)h(to)h
(a)f(text)h(co)r(dec.)35 b(Its)25 b(\014rst)f(form)g(is)h(for)739
2967 y(co)r(decs)i(with)h(only)f(one)g(name,)h(the)g(second)f(for)g(co)
r(decs)g(with)h(sev)n(eral)e(names.)863 3068 y(Enco)r(ding)h(and)h
(deco)r(ding)f(pro)r(cedures)f(w)n(ork)g(as)h(follo)n(ws:)p
Black 755 3239 a Fn(\017)p Black 42 w Fo(\()p Fq(enc)l(o)l(de-pr)l(o)l
(c)46 b(char)d(bu\013er)e(start)g(c)l(ount)8 b Fo(\))40
b Fn(!)i Fq(b)l(o)l(ole)l(an)g(mayb)l(e-c)l(ount)p Black
755 3339 a Fn(\017)p Black 42 w Fo(\()p Fq(de)l(c)l(o)l(de-pr)l(o)l(c)
47 b(bu\013er)41 b(start)g(c)l(ount)8 b Fo(\))40 b Fn(!)i
Fq(mayb)l(e-char)h(c)l(ount)739 3510 y Fr(An)33 b Fq(enc)l(o)l(de-pr)l
(o)l(c)39 b Fr(consumes)32 b(a)g(c)n(haracter)f Fq(char)43
b Fr(to)32 b(enco)r(de,)i(a)f(b)n(yte)f(v)n(ector)g Fq(bu\013er)41
b Fr(to)739 3610 y(receiv)n(e)36 b(the)i(enco)r(ding,)h(an)e(index)h
Fq(start)44 b Fr(in)n(to)37 b(the)h(bu\013er,)i(and)d(a)g(blo)r(c)n(k)g
(size)g Fq(c)l(ount)7 b Fr(.)739 3709 y(It)34 b(is)g(supp)r(osed)g(to)g
(enco)r(de)g(the)g(b)n(ytes)g(in)n(to)f(the)i(blo)r(c)n(k)e(at)h([)p
Fq(start)8 b Fc(;)14 b Fq(start)29 b(+)g(c)l(ount)7 b
Fr(\))q(.)56 b(If)739 3809 y(the)37 b(enco)r(ding)f(is)h(successful,)i
(the)e(pro)r(cedure)f(m)n(ust)h(return)f Fo(#t)g Fr(and)h(the)g(n)n(um)
n(b)r(er)f(of)739 3909 y(b)n(ytes)d(needed)g(b)n(y)f(the)i(enco)r
(ding.)52 b(If)34 b(the)f(c)n(haracter)e(cannot)i(b)r(e)g(enco)r(ded)g
(at)g(all,)h(the)739 4008 y(pro)r(cedure)c(m)n(ust)h(return)f
Fo(#f)g Fr(and)h Fo(#f)p Fr(.)46 b(If)31 b(the)h(enco)r(ding)e(is)h(p)r
(ossible)f(but)i(the)f(space)f(is)739 4108 y(not)24 b(su\016cien)n(t,)g
(the)g(pro)r(cedure)f(m)n(ust)h(return)f Fo(#f)g Fr(and)g(a)g(total)h
(n)n(um)n(b)r(er)f(of)h(b)n(ytes)f(needed)739 4207 y(for)k(the)h(enco)r
(ding.)863 4309 y(A)f Fq(de)l(c)l(o)l(de-pr)l(o)l(c)32
b Fr(consumes)26 b(a)g(b)n(yte)g(v)n(ector)f Fq(bu\013er)9
b Fr(,)26 b(an)g(index)h Fq(start)33 b Fr(in)n(to)26
b(the)h(bu\013er,)739 4408 y(and)18 b(a)g(blo)r(c)n(k)g(size)g
Fq(c)l(ount)7 b Fr(.)34 b(It)19 b(is)f(supp)r(osed)g(to)g(deco)r(de)h
(the)f(b)n(ytes)g(at)h(indices)f([)p Fq(start)7 b Fc(;)14
b Fq(start)30 b(+)f(c)l(ount)7 b Fr(\).)739 4508 y(If)34
b(the)g(deco)r(ding)f(is)h(successful,)h(it)f(m)n(ust)f(return)h(the)g
(deco)r(ded)f(c)n(haracter)f(at)h(the)h(b)r(e-)739 4608
y(ginning)d(of)h(the)h(blo)r(c)n(k,)f(and)g(the)g(n)n(um)n(b)r(er)g(of)
g(b)n(ytes)f(consumed.)50 b(If)32 b(the)g(blo)r(c)n(k)g(cannot)739
4707 y(b)r(egin)25 b(with)h(or)e(b)r(e)h(a)g(pre\014x)f(of)h(a)g(v)-5
b(alid)25 b(enco)r(ding,)g(the)g(pro)r(cedure)f(m)n(ust)i(return)e
Fo(#f)g Fr(and)739 4807 y Fo(#f)p Fr(.)41 b(If)30 b(the)f(blo)r(c)n(k)g
(con)n(tains)f(a)h(true)g(pre\014x)g(of)g(a)g(v)-5 b(alid)29
b(enco)r(ding,)g(the)h(pro)r(cedure)e(m)n(ust)739 4907
y(return)h Fo(#f)f Fr(and)h(a)g(total)g(coun)n(t)f(of)h(b)n(ytes)g
(\(including)h(the)f(bu\013er\))h(needed)f(to)g(complete)739
5006 y(the)c(enco)r(ding.)35 b(Note)24 b(that)h(this)g(b)n(yte)f(coun)n
(t)g(is)g(only)g(a)g(guess:)34 b(the)25 b(system)f(will)g(pro)n(vide)p
Black 2130 5255 a(88)p Black eop end
%%Page: 89 97
TeXDict begin 89 96 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(that)29 b(man)n(y)f(b)n(ytes,)h(but)g(the)g(deco)r(ding)g
(pro)r(cedures)e(migh)n(t)i(still)g(signal)f(an)h(incomplete)291
623 y(enco)r(ding,)e(causing)g(the)h(system)f(to)g(try)h(to)f(obtain)g
(more.)291 897 y Fj(6.7)135 b(Default)46 b(enco)t(dings)291
1079 y Fr(The)18 b(default)h(enco)r(ding)f(for)g(new)g(p)r(orts)g(is)g
(UTF-8.)34 b(F)-7 b(or)18 b(the)g(default)h Fo(current-input-por)o(t)p
Fr(,)291 1179 y Fo(current-output-)o(por)o(t)p Fr(,)k(and)28
b Fo(current-error-por)o(t)p Fr(,)23 b(Sc)n(heme)28 b(48)g(consults)g
(the)h(OS)291 1278 y(for)e(enco)r(ding)g(information.)415
1378 y(F)-7 b(or)28 b(Unix,)h(it)g(consults)f Fo(nl)p
1289 1378 27 4 v 31 w(langinfo\(3\))p Fr(,)c(whic)n(h)29
b(in)g(turn)f(consults)g(the)h Fo(LC)p 2925 1378 V 60
w Fr(en)n(vi-)291 1478 y(ronmen)n(t)h(v)-5 b(ariables.)46
b(If)31 b(the)h(enco)r(ding)e(is)h(not)g(de\014ned)g(that)h(w)n(a)n(y)
-7 b(,)30 b(Sc)n(heme)h(48)f(rev)n(erts)291 1577 y(to)d(US-ASCI)r(I.)
415 1677 y(Under)20 b(Windo)n(ws,)h(Sc)n(heme)f(48)f(uses)g(Unico)r(de)
h(I/O)f(\(using)h(UTF-16\))f(for)g(the)h(default)291
1776 y(p)r(orts)27 b(connected)g(to)h(the)g(console,)e(and)i(Latin-1)e
(for)h(default)h(p)r(orts)g(that)f(are)g(not.)p Black
1681 5255 a(89)p Black eop end
%%Page: 90 98
TeXDict begin 90 97 bop 0 TeXcolorgray Black Black Black
Black 789 1057 a Fq(gener)l(al-c)l(ate)l(gory-name)p
1927 1087 4 100 v 386 w(primary-c)l(ate)l(gory-name)p
2869 1087 V 108 w Fr(Unico)r(de)28 b(category)d(id)p
739 1090 2959 4 v 789 1160 a Fo(uppercase-letter)p 1927
1190 4 100 v 485 w(letter)p 2869 1190 V 679 w("Lu")789
1260 y(lowercase-letter)p 1927 1290 V 485 w(letter)p
2869 1290 V 679 w("Ll")789 1359 y(titlecase-letter)p
1927 1389 V 485 w(letter)p 2869 1389 V 679 w("Lt")789
1459 y(modified-letter)p 1927 1489 V 529 w(letter)p 2869
1489 V 679 w("Lm")789 1559 y(other-letter)p 1927 1624
4 136 v 661 w(letter)p 2869 1624 V 679 w("Lo")789 1694
y(non-spacing-mark)p 1927 1724 4 100 v 485 w(mark)p 2869
1724 V 767 w("Mn")789 1794 y(combining-spacin)o(g-)o(ma)o(rk)p
1927 1824 V 224 w(mark)p 2869 1824 V 767 w("Mc")789 1893
y(enclosing-mark)p 1927 1959 4 136 v 573 w(mark)p 2869
1959 V 767 w("Me")789 2029 y(decimal-digit-nu)o(mb)o(er)p
1927 2059 4 100 v 311 w(number)p 2869 2059 V 679 w("Nd")789
2128 y(letter-number)p 1927 2158 V 617 w(number)p 2869
2158 V 679 w("Nl")789 2228 y(other-number)p 1927 2294
4 136 v 661 w(number)p 2869 2294 V 679 w("No")789 2363
y(opening-punctuat)o(io)o(n)p 1927 2393 4 100 v 355 w(punctuation)p
2869 2393 V 459 w("Ps")789 2463 y(closing-punctuat)o(io)o(n)p
1927 2493 V 355 w(punctuation)p 2869 2493 V 459 w("Pe")789
2563 y(initial-quote-pu)o(nc)o(tu)o(ati)o(on)p 1927 2592
V 93 w(punctuation)p 2869 2592 V 459 w("Pi")789 2662
y(final-quote-punc)o(tu)o(at)o(ion)p 1927 2692 V 180
w(punctuation)p 2869 2692 V 459 w("Pf")789 2762 y(dash-punctuation)p
1927 2792 V 485 w(punctuation)p 2869 2792 V 459 w("Pd")789
2861 y(connector-punctu)o(at)o(io)o(n)p 1927 2891 V 268
w(punctuation)p 2869 2891 V 459 w("Pc")789 2961 y(other-punctuatio)o(n)
p 1927 3027 4 136 v 442 w(punctuation)p 2869 3027 V 459
w("Po")789 3096 y(currency-symbol)p 1927 3126 4 100 v
529 w(symbol)p 2869 3126 V 679 w("Sc")789 3196 y(mathematical-sym)o(bo)
o(l)p 1927 3226 V 355 w(symbol)p 2869 3226 V 679 w("Sm")789
3296 y(modifier-symbol)p 1927 3326 V 529 w(symbol)p 2869
3326 V 679 w("Sk")789 3395 y(other-symbol)p 1927 3461
4 136 v 661 w(symbol)p 2869 3461 V 679 w("So")789 3531
y(space-separator)p 1927 3561 4 100 v 529 w(separator)p
2869 3561 V 547 w("Zs")789 3630 y(paragraph-separa)o(to)o(r)p
1927 3660 V 355 w(separator)p 2869 3660 V 547 w("Zp")789
3730 y(line-separator)p 1927 3796 4 136 v 573 w(separator)p
2869 3796 V 547 w("Zl")789 3865 y(control-characte)o(r)p
1927 3895 4 100 v 442 w(miscellaneous)p 2869 3895 V 371
w("Cc")789 3965 y(formatting-chara)o(ct)o(er)p 1927 3995
V 311 w(miscellaneous)p 2869 3995 V 371 w("Cf")789 4065
y(surrogate)p 1927 4094 V 793 w(miscellaneous)p 2869
4094 V 371 w("Cs")789 4164 y(private-use-char)o(ac)o(te)o(r)p
1927 4194 V 268 w(miscellaneous)p 2869 4194 V 371 w("Co")789
4264 y(unassigned)p 1927 4294 V 749 w(miscellaneous)p
2869 4294 V 371 w("Cn")p Black 1044 4443 a Fr(Figure)i(6.1:)p
0 TeXcolorgray Black 36 w(Unico)r(de)h(general)e(categories)f(and)j
(primary)e(categories)p Black Black Black 2130 5255 a(90)p
Black eop end
%%Page: 91 99
TeXDict begin 91 98 bop 0 TeXcolorgray Black Black Black
291 1147 a Fl(Chapter)64 b(7)291 1563 y Fp(Threads)291
1996 y Fr(This)26 b(c)n(hapter)f(describ)r(es)g(Sc)n(heme)h(48's)f
(thread)h(system:)36 b(Sc)n(heme)26 b(48)f(threads)g(are)g(fully)291
2096 y(preemptiv)n(e;)e(all)d(threads)h(\(curren)n(tly\))g(run)g
(within)h(a)e(single)h(op)r(erating)f(system)h(pro)r(cess.)291
2196 y(Sc)n(heme)h(48)f(allo)n(ws)g(writing)h(customized,)h(nested)g
(sc)n(hedulers,)f(and)g(pro)n(vides)f(n)n(umerous)291
2295 y(facilities)i(for)h(the)g(sync)n(hronization)e(of)i
(shared-memory)d(programs,)i(most)g(imp)r(ortan)n(tly)291
2395 y Fq(pr)l(op)l(osals)36 b Fr(for)27 b(optimistic)h(concurrency)-7
b(.)291 2676 y Fj(7.1)135 b(Creating)46 b(and)f(con)l(trolling)h
(threads)291 2860 y Fr(The)27 b(bindings)h(describ)r(ed)f(in)h(this)g
(section)f(are)g(part)g(of)g(the)h Fo(threads)d Fr(structure.)p
Black 307 3030 a Fn(\017)p Black 41 w Fo(\(spawn)39 b
Fq(thunk)9 b Fo(\))41 b Fn(!)g Fq(thr)l(e)l(ad)p Black
307 3130 a Fn(\017)p Black 41 w Fo(\(spawn)e Fq(thunk)i(name)6
b Fo(\))42 b Fn(!)f Fq(thr)l(e)l(ad)291 3300 y Fo(Spawn)31
b Fr(creates)h(a)g(new)i(thread,)g(passes)e(that)h(thread)g(to)g(the)g
(curren)n(t)f(sc)n(heduler,)i(and)291 3399 y(instructs)h(the)h(sc)n
(heduler)e(to)h(run)h Fq(thunk)43 b Fr(in)36 b(that)g(thread.)59
b(The)36 b Fq(name)42 b Fr(argumen)n(t)34 b(\(a)291 3499
y(sym)n(b)r(ol\))26 b(asso)r(ciates)g(a)h(sym)n(b)r(olic)f(name)h(with)
h(the)f(thread;)g(it)h(is)f(purely)f(for)h(debugging)291
3599 y(purp)r(oses.)p Black 307 3769 a Fn(\017)p Black
41 w Fo(\(relinquish-times)o(li)o(ce)-6 b(\))p Black
307 3868 a Fn(\017)p Black 41 w Fo(\(sleep)39 b Fq(time-in-mil)t(lise)l
(c)l(onds)7 b Fo(\))p Black 307 3968 a Fn(\017)p Black
41 w Fo(\(terminate-curren)o(t-)o(thr)o(ea)o(d)-6 b(\))291
4138 y(Relinquish-time)o(sli)o(ce)20 b Fr(instructs)27
b(the)g(sc)n(heduler)f(to)g(run)h(another)f(thread,)g(th)n(us)h(re-)291
4237 y(linquishing)j(the)h(timeslice)f(of)h(the)f(curren)n(t)g(thread.)
45 b Fo(Sleep)28 b Fr(do)r(es)i(the)h(same)f(and)g(asks)291
4337 y(the)20 b(sc)n(heduler)g(to)g(susp)r(end)h(the)g(curren)n(t)f
(thread)g(for)g(at)g(least)g Fq(time-in-mil)t(lise)l(c)l(onds)29
b Fr(mil-)291 4437 y(liseconds)i(b)r(efore)i(resuming)e(it.)53
b(Finally)-7 b(,)34 b Fo(terminate-curre)o(nt-)o(th)o(re)o(ad)26
b Fr(terminates)291 4536 y(the)i(curren)n(t)e(thread.)415
4637 y(Eac)n(h)35 b(thread)h(is)g(represen)n(ted)f(b)n(y)g(a)h(thread)g
(ob)5 b(ject.)62 b(The)36 b(follo)n(wing)f(pro)r(cedures)291
4737 y(op)r(erate)26 b(on)i(that)f(ob)5 b(ject:)p Black
307 4907 a Fn(\017)p Black 41 w Fo(\(current-thread\))35
b Fn(!)42 b Fq(thr)l(e)l(ad)p Black 307 5006 a Fn(\017)p
Black 41 w Fo(\(thread?)47 b Fq(thing)7 b Fo(\))42 b
Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 1681 5255 a Fr(91)p
Black eop end
%%Page: 92 100
TeXDict begin 92 99 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(thread-name)36
b Fq(thr)l(e)l(ad)9 b Fo(\))41 b Fn(!)h Fq(name)p Black
755 623 a Fn(\017)p Black 42 w Fo(\(thread-uid)36 b Fq(thr)l(e)l(ad)9
b Fo(\))42 b Fn(!)f Fq(inte)l(ger)739 815 y Fo(Current-thread)13
b Fr(returns)k(the)i(thread)f(ob)5 b(ject)18 b(asso)r(ciated)f(with)i
(the)g(curren)n(tly)f(running)739 915 y(thread.)36 b
Fo(Thread?)e Fr(is)27 b(the)g(predicate)f(for)h(thread)f(ob)5
b(jects.)36 b Fo(Thread-name)23 b Fr(extracts)j(the)739
1014 y(name)38 b(of)g(the)h(thread,)h(if)f(one)f(w)n(as)f(sp)r
(eci\014ed)i(in)f(the)h(call)f(to)g Fo(spawn)p Fr(,)h
Fo(#f)e Fr(otherwise.)739 1114 y Fo(Thread-uid)d Fr(returns)j(the)h
Fq(uid)47 b Fr(of)38 b(the)g(thread,)i(a)e(unique)g(in)n(teger)f
(assigned)f(b)n(y)i(the)739 1214 y(thread)27 b(system.)739
1535 y Fj(7.2)135 b(Adv)-7 b(anced)44 b(thread)h(handling)739
1733 y Fr(The)28 b(follo)n(wing)e(bindings)i(are)e(part)h(of)h(the)g
Fo(threads-internal)21 b Fr(structure:)p Black 755 1925
a Fn(\017)p Black 42 w Fo(\(terminate-thre)o(ad)o(!)36
b Fq(thr)l(e)l(ad)9 b Fo(\))p Black 755 2025 a Fn(\017)p
Black 42 w Fo(\(kill-thread!)36 b Fq(thr)l(e)l(ad)9 b
Fo(\))739 2217 y(Terminate-thread)o(!)46 b Fr(un)n(winds)33
b(the)g(thread)g(asso)r(ciated)e(with)i Fq(thr)l(e)l(ad)9
b Fr(,)35 b(running)d(an)n(y)739 2317 y(p)r(ending)22
b Fo(dynamic-wind)15 b Fq(after)30 b Fr(th)n(unks)21
b(\(in)g(that)f(thread\),)i(after)e(whic)n(h)g(the)h(thread)f(ter-)739
2417 y(minates.)39 b Fo(Kill-thread!)34 b Fr(causes)27
b(the)i(thread)f(asso)r(ciated)f(with)i Fq(thr)l(e)l(ad)37
b Fr(to)28 b(terminate)739 2516 y(immediately)g(without)g(un)n(winding)
f(its)h(con)n(tin)n(uation.)739 2837 y Fj(7.3)135 b(Debugging)46
b(m)l(ultithreaded)g(programs)739 3036 y Fr(Debugging)27
b(m)n(ultithreaded)g(programs)f(can)h(b)r(e)h(di\016cult.)863
3144 y(As)k(describ)r(ed)f(in)h(section)p 0 0 1 TeXcolorrgb
31 w(3.12)p Black(,)g(when)f(an)n(y)g(thread)g(signals)g(an)g(error,)g
(Sc)n(heme)g(48)739 3244 y(stops)c(running)g(all)h(of)f(the)h(threads)f
(at)g(that)h(command)g(lev)n(el.)863 3352 y(The)22 b(follo)n(wing)e
(pro)r(cedure)g(\(exp)r(orted)h(b)n(y)g(the)h(structure)f
Fo(debug-messages)p Fr(\))16 b(is)21 b(use-)739 3452
y(ful)28 b(in)g(debugging)f(m)n(ulti-threaded)g(programs.)p
Black 755 3644 a Fn(\017)p Black 42 w Fo(\(debug-message)35
b Fq(element)1768 3656 y Fk(0)1847 3644 y Fq(.)13 b(.)g(.)g
Fo(\))739 3836 y(Debug-message)i Fr(prin)n(ts)20 b(the)h(elemen)n(ts)f
(to)g(`)p Fo(stderr)p Fr(',)g(follo)n(w)n(ed)f(b)n(y)h(a)g(newline.)35
b(The)21 b(only)739 3936 y(t)n(yp)r(es)29 b(of)g(v)-5
b(alues)28 b(that)i Fo(debug-message)24 b Fr(prin)n(ts)k(in)h(full)h
(are)e(small)h(in)n(tegers)f(\(\014xn)n(ums\),)739 4036
y(strings,)23 b(c)n(haracters,)e(sym)n(b)r(ols,)i(b)r(o)r(oleans,)g
(and)g(the)g(empt)n(y)g(list.)35 b(V)-7 b(alues)22 b(of)h(other)f(t)n
(yp)r(es)739 4135 y(are)k(abbreviated)h(as)g(follo)n(ws:)p
Black Black 1421 4315 a(pair)314 b Fo(\(...\))1421 4414
y Fr(v)n(ector)235 b Fo(#\(...\))1421 4514 y Fr(pro)r(cedure)99
b Fo(#)p Fn(f)p Fo(procedure)p Fn(g)1421 4614 y Fr(record)230
b Fo(#)p Fn(f)p Fo(<name)40 b(of)j(record)e(type>)p Fn(g)1421
4713 y Fr(all)28 b(others)119 b Fo(???)739 4907 y Fr(The)26
b(great)g(thing)g(ab)r(out)h Fo(debug-message)21 b Fr(is)26
b(that)h(it)g(b)n(ypasses)e(Sc)n(heme)h(48's)g(I/O)f(and)739
5006 y(thread)i(handling.)37 b(The)27 b(message)f(app)r(ears)h
(immediately)-7 b(,)28 b(with)g(no)f(dela)n(ys)g(or)f(errors.)p
Black 2130 5255 a(92)p Black eop end
%%Page: 93 101
TeXDict begin 93 100 bop 0 TeXcolorgray Black Black Black
291 523 a Fj(7.4)135 b(Optimistic)46 b(concurrency)291
705 y Fr(Most)18 b(of)g(the)h(bindings)f(describ)r(ed)g(in)h(this)g
(section)f(are)f(part)h(of)g(the)h Fo(proposals)c Fr(structure|)291
805 y(the)32 b(lo)n(w-lev)n(el)d(bindings)j(describ)r(ed)f(at)h(the)g
(v)n(ery)e(end)i(of)f(the)h(section)f(are)g(part)g(of)h(the)291
904 y Fo(low-proposals)22 b Fr(structure.)415 1004 y(A)27
b Fq(pr)l(op)l(osal)36 b Fr(is)26 b(a)g(record)f(of)h(reads)f(from)h
(and)g(and)g(writes)g(to)g(lo)r(cations)f(in)i(memory)-7
b(.)291 1103 y(Eac)n(h)22 b(thread)h(has)h(an)f(asso)r(ciated)f
Fq(curr)l(ent)j(pr)l(op)l(osal)35 b Fr(\(whic)n(h)24
b(ma)n(y)f(b)r(e)h Fo(#f)p Fr(\).)35 b(The)24 b Fq(lo)l(gging)291
1203 y Fr(op)r(erations)18 b(listed)i(b)r(elo)n(w)g(record)f(an)n(y)g
(v)-5 b(alues)19 b(read)g(or)g(written)i(in)f(the)g(curren)n(t)f(prop)r
(osal.)291 1303 y(A)i(reading)f(op)r(eration,)h(suc)n(h)g(as)f
Fo(provisional-vecto)o(r-)o(ref)o Fr(,)d(\014rst)j(c)n(hec)n(ks)g(to)h
(see)g(if)h(the)291 1402 y(curren)n(t)29 b(prop)r(osal)g(con)n(tains)g
(a)h(v)-5 b(alue)30 b(for)g(the)g(relev)-5 b(an)n(t)30
b(lo)r(cation.)44 b(If)31 b(so,)f(that)h(v)-5 b(alue)30
b(is)291 1502 y(returned)g(as)h(the)g(result)g(of)g(the)h(read.)46
b(If)32 b(not,)g(the)f(curren)n(t)g(con)n(ten)n(ts)f(of)h(the)h(lo)r
(cation)291 1602 y(are)22 b(stored)g(in)h(the)g(prop)r(osal)f(and)h
(then)g(returned)g(as)f(the)i(result)e(of)h(the)h(read.)34
b(A)24 b(logging)291 1701 y(write)k(to)g(a)g(lo)r(cation)g(stores)g
(the)h(new)f(v)-5 b(alue)29 b(as)f(the)h(curren)n(t)e(con)n(ten)n(ts)h
(of)h(the)g(lo)r(cation)291 1801 y(in)e(the)h(curren)n(t)f(prop)r
(osal;)f(the)i(con)n(ten)n(ts)f(of)h(the)g(lo)r(cation)f(itself)h
(remain)f(unc)n(hanged.)415 1900 y Fq(Committing)35 b
Fr(to)27 b(a)g(prop)r(osal)f(v)n(eri\014es)g(that)h(an)n(y)f(reads)g
(logged)g(in)i(the)f(prop)r(osal)f(are)291 2000 y(still)j(v)-5
b(alid)30 b(and,)g(if)g(so,)g(p)r(erforms)f(an)n(y)f(writes)h(that)h
(the)g(prop)r(osal)e(con)n(tains.)42 b(A)30 b(logged)291
2100 y(read)25 b(is)h(v)-5 b(alid)26 b(if,)h(at)f(the)h(time)g(of)f
(the)h(commit,)f(the)h(lo)r(cation)f(con)n(tains)f(the)h(same)g(v)-5
b(alue)291 2199 y(it)33 b(had)f(at)h(the)g(time)g(of)g(the)g(original)e
(read)h(\(note)h(that)g(this)g(do)r(es)f(not)h(mean)f(that)h(no)291
2299 y(c)n(hange)25 b(o)r(ccurred,)g(simply)h(that)h(the)f(v)-5
b(alue)26 b(no)n(w)g(is)g(the)g(same)g(as)f(the)i(v)-5
b(alue)26 b(then\).)37 b(If)26 b(a)291 2399 y(prop)r(osal)f(has)i(an)g
(in)n(v)-5 b(alid)28 b(read)e(then)i(the)g(e\013ort)f(to)g(commit)h
(fails;)f(no)h(c)n(hange)e(is)h(made)291 2498 y(to)22
b(the)i(v)-5 b(alue)22 b(of)h(an)n(y)f(lo)r(cation.)35
b(The)23 b(v)n(eri\014cations)e(and)i(subsequen)n(t)g(writes)f(to)h
(memory)291 2598 y(are)j(p)r(erformed)h(atomically)g(with)h(resp)r(ect)
f(to)h(other)f(prop)r(osal)f(commit)i(attempts.)415 2697
y(The)37 b Fo(queues)e Fr(structure)i(\(with)h(source)e(in)h
Fo(scheme/big/queue.)o(scm)o Fr(\))32 b(is)37 b(a)g(thor-)291
2797 y(oughly)17 b(commen)n(ted)h(example)g(of)h(a)f(mo)r(derately)f
(complex)h(data)g(structure)g(made)g(thread-)291 2897
y(safe)27 b(using)g(optimistic)h(concurrency)-7 b(.)p
Black 307 3035 a Fn(\017)p Black 41 w Fo(\(call-ensuring-at)o(om)o(ici)
o(ty)35 b Fq(thunk)9 b Fo(\))40 b Fn(!)i Fq(value)g(.)13
b(.)g(.)p Black 307 3135 a Fn(\017)p Black 41 w Fo(\(call-ensuring-at)o
(om)o(ici)o(ty)o(!)35 b Fq(thunk)9 b Fo(\))p Black 307
3235 a Fn(\017)p Black 41 w Fo(\(ensure-atomicity)35
b Fq(exp)47 b Fo(...\))26 b Fn(!)h Fq(value)k(.)13 b(.)g(.)950
b Fr(syn)n(tax)p Black 307 3334 a Fn(\017)p Black 41
w Fo(\(ensure-atomicity)o(!)35 b Fq(exp)47 b Fo(...\))1359
b Fr(syn)n(tax)291 3473 y(If)18 b(there)h(is)f(a)g(prop)r(osal)f(in)h
(place)g Fo(call-ensuring-ato)o(mi)o(cit)o(y)12 b Fr(and)18
b Fo(call-ensuring-ato)o(mi)o(cit)o(y!)291 3572 y Fr(simply)29
b(mak)n(e)f(a)h(\(tail-recursiv)n(e\))f(call)h(to)g Fq(thunk)9
b Fr(.)41 b(If)29 b(the)h(curren)n(t)e(prop)r(osal)g(is)h
Fo(#f)g Fr(they)291 3672 y(create)36 b(a)i(new)g(prop)r(osal,)g
(install)g(it,)j(call)c Fq(thunk)9 b Fr(,)40 b(and)e(then)g(try)f(to)h
(commit)g(to)g(the)291 3772 y(prop)r(osal.)60 b(This)36
b(pro)r(cess)e(rep)r(eats,)k(with)e(a)f(new)h(prop)r(osal)f(on)g(eac)n
(h)g(iteration,)i(un)n(til)291 3871 y(the)30 b(commit)h(succeeds.)45
b Fo(Call-ensuring-at)o(om)o(ici)o(ty)24 b Fr(returns)30
b(whatev)n(er)f(v)-5 b(alues)30 b(are)291 3971 y(returned)h(b)n(y)i
Fq(thunk)40 b Fr(on)32 b(its)g(\014nal)g(in)n(v)n(o)r(cation,)f(while)h
Fo(ensure-atomicity!)43 b Fr(discards)291 4071 y(an)n(y)26
b(suc)n(h)i(v)-5 b(alues)27 b(and)g(returns)g(nothing.)415
4170 y Fo(Ensure-atomicity)12 b Fr(and)18 b Fo(ensure-atomicity!)27
b Fr(are)17 b(macro)g(v)n(ersions)g(of)25 b Fo(call-ensuring-at)o(om)o
(ic)o(ity)291 4270 y Fr(and)18 b Fo(call-ensuring-at)o(om)o(ici)o(ty)o
(!)p Fr(:)26 b Fo(\(ensure-atomicity)37 b Fq(exp)49 b
Fo(...\))32 b Fr(expands)18 b(in)n(to)291 4369 y Fo(\(call-ensuring-)o
(ato)o(mi)o(ci)o(ty)37 b(\(lambda)k(\(\))i Fq(exp)49
b Fo(...\)\))p Fr(;)19 b(lik)n(ewise)f(for)g Fo(ensure-atomicit)o(y!)
291 4469 y Fr(and)27 b Fo(call-ensuring-at)o(omi)o(ci)o(ty)o(!)p
Fr(.)p Black 307 4608 a Fn(\017)p Black 41 w Fo(\(provisional-car)35
b Fq(p)l(air)9 b Fo(\))42 b Fn(!)g Fq(value)p Black 307
4707 a Fn(\017)p Black 41 w Fo(\(provisional-cdr)35 b
Fq(p)l(air)9 b Fo(\))42 b Fn(!)g Fq(value)p Black 307
4807 a Fn(\017)p Black 41 w Fo(\(provisional-set-)o(ca)o(r!)35
b Fq(p)l(air)43 b(value)6 b Fo(\))p Black 307 4907 a
Fn(\017)p Black 41 w Fo(\(provisional-set-)o(cd)o(r!)35
b Fq(p)l(air)43 b(value)6 b Fo(\))p Black 307 5006 a
Fn(\017)p Black 41 w Fo(\(provisional-cell)o(-r)o(ef)35
b Fq(c)l(el)t(l)9 b Fo(\))42 b Fn(!)f Fq(value)p Black
1681 5255 a Fr(93)p Black eop end
%%Page: 94 102
TeXDict begin 94 101 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(provisional-ce)o(ll)o(-se)o
(t!)35 b Fq(c)l(el)t(l)42 b(value)6 b Fo(\))p Black 755
623 a Fn(\017)p Black 42 w Fo(\(provisional-ve)o(ct)o(or-)o(re)o(f)36
b Fq(ve)l(ctor)41 b(i)8 b Fo(\))42 b Fn(!)g Fq(value)p
Black 755 722 a Fn(\017)p Black 42 w Fo(\(provisional-ve)o(ct)o(or-)o
(se)o(t!)35 b Fq(ve)l(ctor)42 b(i)g(value)6 b Fo(\))p
Black 755 822 a Fn(\017)p Black 42 w Fo(\(provisional-st)o(ri)o(ng-)o
(re)o(f)36 b Fq(ve)l(ctor)41 b(i)8 b Fo(\))42 b Fn(!)g
Fq(char)p Black 755 922 a Fn(\017)p Black 42 w Fo(\(provisional-st)o
(ri)o(ng-)o(se)o(t!)35 b Fq(ve)l(ctor)42 b(i)g(char)9
b Fo(\))p Black 755 1021 a Fn(\017)p Black 42 w Fo(\(provisional-by)o
(te)o(-ve)o(ct)o(or-)o(re)o(f)35 b Fq(ve)l(ctor)42 b(i)8
b Fo(\))42 b Fn(!)g Fq(k)p Black 755 1121 a Fn(\017)p
Black 42 w Fo(\(provisional-by)o(te)o(-ve)o(ct)o(or-)o(se)o(t!)35
b Fq(ve)l(ctor)42 b(i)g(k)9 b Fo(\))739 1272 y Fr(These)27
b(are)g(all)h(logging)e(v)n(ersions)g(of)h(their)h(Sc)n(heme)g(coun)n
(terparts.)35 b(Reads)28 b(are)e(c)n(hec)n(k)n(ed)739
1371 y(when)c(the)g(curren)n(t)e(prop)r(osal)h(is)g(committed)h(and)g
(writes)f(are)f(dela)n(y)n(ed)h(un)n(til)h(the)g(commit)739
1471 y(succeeds.)51 b(If)33 b(the)f(curren)n(t)g(prop)r(osal)f(is)h
Fo(#f)g Fr(these)g(p)r(erform)g(exactly)g(as)g(their)g(Sc)n(heme)739
1570 y(coun)n(terparts.)863 1671 y(The)23 b(follo)n(wing)e(implemen)n
(tation)i(of)f(a)g(simple)h(coun)n(ter)e(ma)n(y)h(not)g(function)h
(prop)r(erly)739 1770 y(when)28 b(used)f(b)n(y)h(m)n(ultiple)g
(threads.)p Black Black 739 1938 a Fo(\(define)41 b(\(make-counter\))
826 2038 y(\(let)h(\(\(value)f(0\)\))913 2137 y(\(lambda)g(\(\))1000
2237 y(\(set!)h(value)f(\(+)i(value)f(1\)\))1000 2336
y(value\)\)\))863 2504 y Fr(Here)29 b(is)g(the)g(same)g(pro)r(cedure)f
(using)h(a)f(prop)r(osal)g(to)h(ensure)f(that)h(eac)n(h)f(incremen)n(t)
739 2603 y(op)r(eration)33 b(happ)r(ens)h(atomically)-7
b(.)55 b(The)35 b(v)-5 b(alue)34 b(of)g(the)g(coun)n(ter)f(is)h(k)n
(ept)g(in)h(a)e(cell)h(\(see)739 2703 y(section)p 0 0 1
TeXcolorrgb 27 w(5.6)p Black(\))27 b(to)h(allo)n(w)e(the)i(use)g(of)f
(logging)f(op)r(erations.)p Black Black 739 2871 a Fo(\(define)41
b(\(make-counter\))826 2970 y(\(let)h(\(\(value)f(\(make-cell)e
(0\)\)\))913 3070 y(\(lambda)i(\(\))1000 3170 y(\(ensure-atomicity)1088
3269 y(\(lambda)f(\(\))1175 3369 y(\(let)i(\(\(v)g(\(+)h
(\(provisional-cel)o(l-)o(ref)37 b(value\))1698 3469
y(1\)\)\))1262 3568 y(\(provisional-cel)o(l-)o(set)o(!)g(value)42
b(v\))1262 3668 y(v\)\)\)\)\)\))863 3835 y Fr(Because)33
b Fo(ensure-atomicity)27 b Fr(creates)33 b(a)g(new)h(prop)r(osal)e
(only)h(if)h(there)g(is)f(no)h(ex-)739 3935 y(isting)h(prop)r(osal)f
(in)h(place,)i(m)n(ultiple)f(atomic)f(actions)g(can)g(b)r(e)g(merged)g
(in)n(to)g(a)g(single)739 4034 y(atomic)f(action.)56
b(F)-7 b(or)34 b(example,)h(the)g(follo)n(wing)e(pro)r(cedure)h
(incremen)n(ts)f(an)h(arbitrary)739 4134 y(n)n(um)n(b)r(er)j(of)h(coun)
n(ters)f(at)g(the)h(same)f(time.)68 b(This)38 b(w)n(orks)e(ev)n(en)h
(if)h(the)g(same)f(coun)n(ter)739 4234 y(app)r(ears)22
b(m)n(ultiple)i(times;)i Fo(\(step-counters!)81 b(c0)42
b(c0\))23 b Fr(w)n(ould)g(add)g(t)n(w)n(o)g(to)g(the)h(v)-5
b(alue)739 4333 y(of)27 b(coun)n(ter)g Fo(c0)p Fr(.)p
Black Black 739 4501 a Fo(\(define)41 b(\(step-counters!)c(.)43
b(counters\))826 4601 y(\(ensure-atomicit)o(y)913 4700
y(\(lambda)e(\(\))1000 4800 y(\(for-each)f(\(lambda)h(\(counter\))1523
4900 y(\(counter\)\))1436 4999 y(counters\)\)\)\))p Black
2130 5255 a Fr(94)p Black eop end
%%Page: 95 103
TeXDict begin 95 102 bop 0 TeXcolorgray Black Black Black
Black Black 291 523 a Fo(\(define-synchro)o(niz)o(ed)o(-r)o(eco)o(rd)o
(-ty)o(pe)37 b Fq(tag)51 b(typ)l(e-name)378 623 y Fo(\()p
Fq(c)l(onstructor-name)d(\014eld-tag)k Fo(...\))378 722
y([\()29 b Fq(\014eld-tag)51 b Fo(...\)])378 822 y Fq(pr)l(e)l(dic)l
(ate-name)378 922 y Fo(\()p Fq(\014eld-tag)g(ac)l(c)l(essor-name)f
Fo([)p Fq(mo)l(di\014er-name)6 b Fo(]\))378 1021 y(...\))291
1200 y Fr(This)30 b(is)h(the)f(same)g(as)g Fo(define-record-typ)o(e)24
b Fr(except)31 b(all)f(\014eld)h(reads)e(and)i(writes)f(are)291
1299 y(logged)e(in)j(the)f(curren)n(t)f(prop)r(osal.)43
b(If)30 b(the)g(optional)g(list)g(of)g(\014eld)g(tags)f(is)h(presen)n
(t)f(then)291 1399 y(only)e(those)g(\014elds)h(will)f(b)r(e)h(logged.)p
Black 307 1545 a Fn(\017)p Black 41 w Fo(\(call-atomically)35
b Fq(thunk)9 b Fo(\))41 b Fn(!)g Fq(value\(s\))p Black
307 1645 a Fn(\017)p Black 41 w Fo(\(call-atomically!)35
b Fq(thunk)9 b Fo(\))p Black 307 1745 a Fn(\017)p Black
41 w Fo(\(atomically)37 b Fq(exp)47 b Fo(...\))26 b Fn(!)i
Fq(value\(s\))1241 b Fr(syn)n(tax)p Black 307 1844 a
Fn(\017)p Black 41 w Fo(\(atomically!)37 b Fq(exp)47
b Fo(...\))1620 b Fr(syn)n(tax)291 1991 y Fo(Call-atomically)12
b Fr(and)18 b Fo(call-atomically!)27 b Fr(are)18 b(iden)n(tical)g(to)g
Fo(call-ensuring-at)o(omi)o(ci)o(ty)291 2090 y Fr(and)35
b Fo(call-ensuring-ato)o(mi)o(ci)o(ty!)55 b Fr(except)35
b(that)h(they)g(alw)n(a)n(ys)e(install)i(a)f(new)h(pro-)291
2190 y(p)r(osal)f(b)r(efore)h(calling)h Fo(thunk)p Fr(.)61
b(The)37 b(curren)n(t)e(prop)r(osal)g(is)h(sa)n(v)n(ed)f(and)h(then)h
(restored)291 2289 y(after)e Fo(thunk)f Fr(returns.)62
b Fo(Call-atomically)30 b Fr(and)35 b Fo(call-atomically!)56
b Fr(are)35 b(useful)h(if)291 2389 y Fo(thunk)25 b Fr(con)n(tains)i(co)
r(de)g(that)h(is)g(not)f(to)h(b)r(e)g(com)n(bined)f(with)h(an)n(y)f
(other)g(op)r(eration.)415 2489 y Fo(Atomically)21 b
Fr(and)j Fo(atomically!)32 b Fr(are)24 b(macro)f(v)n(ersions)g(of)31
b Fo(call-atomically)19 b Fr(and)291 2588 y Fo(call-atomically)o(!)p
Fr(:)36 b Fo(\(atomically)j Fq(exp)49 b Fo(...\))43 b
Fr(expands)30 b(in)n(to)f Fo(\(call-atomically)291 2688
y(\(lambda)40 b(\(\))j Fq(exp)49 b Fo(...\)\))p Fr(;)26
b(lik)n(ewise)h(for)g Fo(atomically!)32 b Fr(and)27 b
Fo(call-atomically!)p Fr(.)415 2788 y(The)d(follo)n(wing)e(pro)r
(cedures)h(and)g(macro)f(are)h(in)n(tended)h(primarily)e(for)i(use)f
(in)h(imple-)291 2887 y(men)n(ting)e(new)h(sync)n(hronization)e
(primitiv)n(es)h(or)g(complex)h(thread-safe)e(data)i(structures.)p
Black 307 3050 a Fn(\017)p Black 41 w Fo(\(with-new-proposa)o(l)35
b(\()p Fq(lose)6 b Fo(\))42 b Fq(exp)47 b Fo(...\))26
b Fn(!)i Fq(value)i(.)13 b(.)g(.)636 b Fr(syn)n(tax)p
Black 307 3150 a Fn(\017)p Black 41 w Fo(\(maybe-commit\))36
b Fn(!)41 b Fq(b)l(o)l(ole)l(an)p Black 307 3249 a Fn(\017)p
Black 41 w Fo(\(proposal-active?)o(\))j Fn(!)e Fq(b)l(o)l(ole)l(an)p
Black 307 3349 a Fn(\017)p Black 41 w Fo(\(remove-current-p)o(ro)o(pos)
o(al)o(!)-6 b(\))p Black 307 3449 a Fn(\017)p Black 41
w Fo(\(invalidate-curre)o(nt)o(-pr)o(op)o(os)o(al!)f(\))291
3611 y(With-new-propos)o(al)31 b Fr(sa)n(v)n(es)36 b(the)i(curren)n(t)f
(prop)r(osal,)h(installs)g(a)f(new)g(one,)j(executes)291
3711 y(the)f(forms)f(in)i(the)f(b)r(o)r(dy)-7 b(,)43
b(reinstalls)38 b(the)h(formerly)f(curren)n(t)g(prop)r(osal,)j(and)e
(returns)291 3811 y(whatev)n(er)28 b(the)j(last)e(b)r(o)r(dy)i(form)e
(returned.)44 b(It)30 b(also)f(binds)h Fq(lose)37 b Fr(to)30
b(a)f(th)n(unk)i(rep)r(eating)291 3910 y(the)h(pro)r(cedure)e(of)i
(installing)f(a)g(new)h(pro)r(cedure)e(and)h(running)h(the)g(b)r(o)r
(dy)-7 b(.)49 b(T)n(ypically)-7 b(,)291 4010 y(the)27
b(b)r(o)r(dy)h(will)g(call)f Fo(maybe-commit)c Fr(and,)k(if)h(that)g
(fails,)f(tail-call)g Fq(lose)34 b Fr(to)28 b(try)f(again.)35
b(If)291 4110 y Fq(lose)40 b Fr(is)33 b(called)g(from)g(a)g(non-tail)g
(p)r(osition)g(of)h(the)f(b)r(o)r(dy)-7 b(,)35 b(the)f(results)f(are)f
(unsp)r(eci\014ed)291 4209 y(\(and)27 b(probably)g(harmful\).)415
4309 y Fo(Maybe-commit)19 b Fr(v)n(eri\014es)k(that)i(an)n(y)e(reads)g
(logged)g(in)i(the)f(curren)n(t)g(prop)r(osal)e(are)i(still)291
4408 y(v)-5 b(alid)22 b(and,)h(if)f(so,)h(p)r(erforms)e(an)n(y)g
(writes)h(that)g(it)h(con)n(tains.)34 b(A)22 b(logged)f(read)g(is)h(v)
-5 b(alid)22 b(if,)i(at)291 4508 y(the)i(time)g(of)g(the)h(commit,)f
(the)h(lo)r(cation)e(read)g(con)n(tains)g(the)h(same)g(v)-5
b(alue)26 b(it)g(had)g(at)g(the)291 4608 y(time)d(of)g(the)g(original)e
(read)h(\(note)h(that)g(this)h(do)r(es)e(not)h(mean)g(that)g(no)f(c)n
(hange)g(o)r(ccurred,)291 4707 y(simply)g(that)g(the)g(v)-5
b(alue)22 b(no)n(w)g(is)f(the)i(same)e(as)g(the)i(v)-5
b(alue)22 b(then\).)36 b Fo(Maybe-commit)17 b Fr(returns)291
4807 y Fo(#t)26 b Fr(if)j(the)f(commit)f(succeeds)g(and)h
Fo(#f)f Fr(if)h(it)g(fails.)415 4907 y Fo(Proposal-active?)64
b Fr(returns)38 b Fo(#t)f Fr(if)j(a)e(prop)r(osal)f(is)i(activ)n(e,)h
(and)f Fo(#f)f Fr(otherwise.)291 5006 y Fo(Remove-current-)o(pro)o(po)o
(sa)o(l!)49 b Fr(remo)n(v)n(es)32 b(and)i(discards)f(the)h(curren)n(t)f
(prop)r(osal;)j(this)p Black 1681 5255 a(95)p Black eop
end
%%Page: 96 104
TeXDict begin 96 103 bop 0 TeXcolorgray Black Black Black
739 523 a Fr(can)18 b(b)r(e)h(used)f(to)g(clean)g(up)h(b)r(efore)f
(raising)f(an)h(error.)32 b Fo(Invalidate-curre)o(nt)o(-pr)o(op)o(osa)o
(l!)739 623 y Fr(ensures)d(that)h(an)n(y)f(attempt)h(to)g(commit)g(the)
g(curren)n(t)f(prop)r(osal)f(will)i(fail;)h(this)f(can)g(b)r(e)739
722 y(used)25 b(if)h(an)f(op)r(eration)f(on)h(a)f(thread-safe)g(data)h
(structure)g(detects)g(that)h(it)f(has)g(seen)g(the)739
822 y(data)i(structure)g(in)h(an)f(inconsisten)n(t)g(state.)863
922 y(The)33 b(follo)n(wing)e(pro)r(cedures)g(giv)n(e)h(access)f(to)h
(the)h(lo)n(w-lev)n(el)e(prop)r(osal)g(mec)n(hanism.)739
1022 y(They)c(are)g(de\014ned)h(in)g(the)g Fo(low-proposals)22
b Fr(structure.)p Black 755 1189 a Fn(\017)p Black 42
w Fo(\(make-proposal\))35 b Fn(!)41 b Fq(pr)l(op)l(osal)p
Black 755 1288 a Fn(\017)p Black 42 w Fo(\(current-propos)o(al)o(\))36
b Fn(!)41 b Fq(pr)l(op)l(osal)p Black 755 1388 a Fn(\017)p
Black 42 w Fo(\(set-current-pr)o(op)o(osa)o(l!)35 b Fq(pr)l(op)l(osal)9
b Fo(\))863 1555 y(Make-proposal)k Fr(creates)18 b(a)g(new)g(prop)r
(osal.)32 b Fo(Current-proposal)12 b Fr(and)18 b Fo(set-current-propo)o
(sal)739 1655 y Fr(access)f(and)h(set)h(the)f(curren)n(t)g(thread's)g
(prop)r(osal.)32 b(It)19 b(is)f(an)g(error)e(to)j(pass)e(to)h
Fo(set-current-propo)o(sal)o(!)739 1755 y Fr(a)27 b(prop)r(osal)f(that)
i(is)g(already)e(in)i(use.)739 2031 y Fj(7.5)135 b(Condition)46
b(v)-7 b(ariables)739 2214 y Fq(Condition)32 b(variables)37
b Fr(\(de\014ned)29 b(in)g(the)g Fo(condvars)c Fr(structure\))j(allo)n
(w)f(threads)h(p)r(erform)739 2313 y(condition)36 b(sync)n
(hronization:)53 b(It)36 b(allo)n(ws)f(threads)h(to)g(blo)r(c)n(k,)i(w)
n(aiting)e(for)g(a)g(sp)r(eci\014ed)739 2413 y(condition|asso)r(ciated)
22 b(with)i(a)f(condition)g(v)-5 b(ariable|to)22 b(o)r(ccur,)i(and)f
(other)g(threads)f(to)739 2512 y(w)n(ak)n(e)k(up)i(the)g(w)n(aiting)f
(threads)g(when)h(the)g(condition)f(is)g(ful\014lled.)863
2612 y(Note)i(that,)g(in)g(Sc)n(heme)g(48,)f(condition)h(v)-5
b(ariables)27 b(w)n(ork)g(in)i(conjunction)g(with)g(pro-)739
2712 y(p)r(osals,)f(not)h(with)g(m)n(utex)f(lo)r(c)n(ks)g(or)g
(semaphores,)f(as)h(in)h(most)f(other)g(implemen)n(tations)739
2812 y(of)f(this)h(concept.)p Black 755 2962 a Fn(\017)p
Black 42 w Fo(\(make-condvar\))35 b Fn(!)42 b Fq(c)l(ondvar)p
Black 755 3062 a Fn(\017)p Black 42 w Fo(\(make-condvar)36
b Fq(id)9 b Fo(\))41 b Fn(!)h Fq(c)l(ondvar)p Black 755
3161 a Fn(\017)p Black 42 w Fo(\(condvar?)k Fq(thing)7
b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 755 3261
a Fn(\017)p Black 42 w Fo(\(set-condvar-ha)o(s-)o(val)o(ue)o(?!)35
b Fq(c)l(ondvar)43 b(b)l(o)l(ole)l(an)6 b Fo(\))p Black
755 3361 a Fn(\017)p Black 42 w Fo(\(condvar-has-va)o(lu)o(e?)44
b Fq(c)l(ondvar)9 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p
Black 755 3460 a Fn(\017)p Black 42 w Fo(\(set-condvar-va)o(lu)o(e!)35
b Fq(c)l(ondvar)43 b(value)6 b Fo(\))p Black 755 3560
a Fn(\017)p Black 42 w Fo(\(condvar-value)35 b Fq(c)l(ondvar)9
b Fo(\))42 b Fn(!)g Fq(value)p Black 755 3660 a Fn(\017)p
Black 42 w Fo(\(maybe-commit-a)o(nd)o(-wa)o(it)o(-fo)o(r-)o(con)o(dv)o
(ar)35 b Fq(c)l(ondvar)9 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 755 3759 a Fn(\017)p Black 42 w Fo(\(maybe-commit-a)o(nd)o(-se)o
(t-)o(con)o(dv)o(ar!)h Fq(c)l(ondvar)g(value)6 b Fo(\))42
b Fn(!)f Fq(b)l(o)l(ole)l(an)739 3910 y Fo(Make-condvar)24
b Fr(creates)k(a)h(condition)g(v)-5 b(ariable.)41 b(\(The)29
b(optional)g Fq(id)38 b Fr(argumen)n(t)29 b(is)g(only)739
4009 y(for)39 b(debugging)h(purp)r(oses;)45 b(the)c(discloser)d(for)i
(condition)g(v)-5 b(ariables)38 b(prin)n(ts)i(it)h(out)f(if)739
4109 y(presen)n(t.\))c Fo(Condvar?)e Fr(is)28 b(the)f(predicate)g(for)h
(condition)f(v)-5 b(ariables.)863 4209 y(Eac)n(h)27 b(condition)g(v)-5
b(ariable)26 b(has)h(an)g(asso)r(ciated)f(v)-5 b(alue)27
b(and)h(a)f(\015ag)g Fo(has-value?)33 b Fr(sig-)739 4308
y(nalling)18 b(if)h(the)f(condition)h(has)e(already)g(o)r(ccured.)33
b(The)19 b(accessor)d(for)i(\015ag)g(is)g Fo(condvar-has-valu)o(e?)o
Fr(;)739 4408 y Fo(set-condvar-has-)o(va)o(lue)o(?!)64
b Fr(sets)38 b(it.)71 b(Both)38 b(are)g(pro)n(visional)e(op)r(erations)
i(and)g(go)739 4508 y(through)28 b(the)i(curren)n(t)e(prop)r(osal.)40
b Fo(Set-condvar-val)o(ue!)34 b Fr(sets)29 b(the)h(v)-5
b(alue)29 b(of)g(the)g(con-)739 4607 y(dition)f(v)-5
b(ariable)26 b(\(pro)n(visionally\),)g(and)i Fo(condvar-value)22
b Fr(extracts)27 b(it.)863 4707 y Fo(Maybe-commit-and-)o(wai)o(t-)o(fo)
o(r-c)o(on)o(dva)o(r)12 b Fr(attempts)19 b(to)f(commit)h(the)g(curren)n
(t)e(pro-)739 4807 y(p)r(osal.)49 b(If)33 b(the)f(commit)g(succeeds,)h
(it)f(susp)r(ends)g(the)g(curren)n(t)f(thread)h(and)g(registers)e(it)
739 4907 y(with)19 b(the)g Fq(c)l(ondvar)28 b Fr(condition)18
b(v)-5 b(ariable.)33 b(Up)r(on)19 b(w)n(aking)e(up)i(again)e
Fo(maybe-commit-and)o(-w)o(ai)o(t-f)o(or)o(-co)o(nd)o(va)o(r)739
5006 y Fr(returns)27 b Fo(#t)p Fr(,)g(If)h(the)g(commit)f(fails,)h
Fo(maybe-commit-and)o(-se)o(t-)o(co)o(ndv)o(ar)21 b Fr(returns)27
b Fo(#f)p Fr(.)p Black 2130 5255 a(96)p Black eop end
%%Page: 97 105
TeXDict begin 97 104 bop 0 TeXcolorgray Black Black Black
415 523 a Fo(Maybe-commit-and)o(-se)o(t-)o(con)o(dv)o(ar!)39
b Fr(sets)30 b(the)h(v)-5 b(alue)31 b(of)f(the)h Fq(c)l(ondvar)41
b Fr(condition)291 623 y(v)-5 b(ariable)28 b(to)i Fq(value)6
b Fr(,)31 b(\(pro)n(visionally\))d(sets)i(the)g Fo(has-value?)39
b Fr(\015ag)29 b(to)h Fo(#t)p Fr(,)f(and)h(then)g(at-)291
722 y(tempt)24 b(to)g(commit)g(the)h(curren)n(t)e(prop)r(osal.)34
b(Up)r(on)24 b(success,)g(it)g(w)n(ak)n(es)f(up)h(all)g(susp)r(ended)
291 822 y(threads)i(registered)h(with)h Fq(c)l(ondvar)37
b Fr(and)28 b(returns)f Fo(#t)p Fr(,)g(otherwise,)f(it)i(returns)f
Fo(#f)p Fr(.)291 1091 y Fj(7.6)135 b(Mutual)45 b(exclusion)291
1273 y Fr(Sc)n(heme)26 b(48)g(also)g(has)h(more)f(traditional)g(m)n
(utual-exclusion)g(sync)n(hronization)f(abstrac-)291
1373 y(tions,)35 b(sp)r(eci\014cally)e(m)n(utex)h(lo)r(c)n(ks)f(and)g
(placeholders.)54 b(Note)34 b(that)g(t)n(ypically)f(sync)n(hro-)291
1472 y(nization)20 b(via)g(optimistic)g(concurrency)f(is)i(usually)f
(preferable:)32 b(Mutual)21 b(exclusion)f(often)291 1572
y(puts)h(the)g(running)g(program)e(in)n(to)h(an)h(inconsisten)n(t)g
(state)g(for)f(the)h(time)h(of)f(the)g(inclusion,)291
1671 y(whic)n(h)27 b(has)g(adv)n(erse)f(e\013ects)i(on)f(mo)r(dularit)n
(y)g(and)g(in)n(terruptibilit)n(y)-7 b(.)291 1899 y Fe(7.6.1)112
b(Lo)s(c)m(ks)291 2052 y Fr(The)27 b Fo(locks)f Fr(structure)h(con)n
(tains)g(bindings)g(that)h(implemen)n(t)g(standard)f(m)n(utex)g(lo)r(c)
n(ks:)p Black 307 2193 a Fn(\017)p Black 41 w Fo(\(make-lock\))37
b Fn(!)42 b Fq(lo)l(ck)p Black 307 2293 a Fn(\017)p Black
41 w Fo(\(lock?)48 b Fq(thing)7 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l
(an)p Black 307 2392 a Fn(\017)p Black 41 w Fo(\(obtain-lock)c
Fq(lo)l(ck)9 b Fo(\))p Black 307 2492 a Fn(\017)p Black
41 w Fo(\(maybe-obtain-loc)o(k)35 b Fq(lo)l(ck)9 b Fo(\))42
b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 307 2592 a Fn(\017)p
Black 41 w Fo(\(release-lock)36 b Fq(lo)l(ck)9 b Fo(\))291
2733 y(Make-lock)30 b Fr(creates)k(a)g(lo)r(c)n(k)g(in)h(the)g
(\\released")d(state.)57 b Fo(Lock?)f Fr(is)35 b(the)f(predicate)g(for)
291 2833 y(lo)r(c)n(ks.)415 2932 y Fo(Obtain-lock)21
b Fr(atomically)j(c)n(hec)n(ks)h(if)32 b Fq(lo)l(ck)j
Fr(is)26 b(in)f(the)h(\\released")d(state.)36 b(If)26
b(it)g(is,)g(the)291 3032 y(lo)r(c)n(k)f(is)h(put)h(in)n(to)e(the)i
(\\obtained")e(state,)h(and)g Fo(obtain-lock)c Fr(returns)j
(immediately)-7 b(.)36 b(If)291 3132 y(the)18 b(lo)r(c)n(k)g(is)h(in)f
(the)h(\\obtained")e(state,)k(the)d(curren)n(t)g(thread)g(is)g(susp)r
(ended)h(and)f(registered)291 3231 y(with)26 b(the)f(lo)r(c)n(k.)36
b Fo(Maybe-obtain-loc)o(k)p Fr(,)20 b(lik)n(e)25 b Fo(obtain-lock)p
Fr(,)d(c)n(hec)n(ks)i(the)i(state)f(of)32 b Fq(lo)l(ck)9
b Fr(:)291 3331 y(if)29 b(it)h(is)f(\\released,")e(the)j(lo)r(c)n(k)f
(is)g(put)h(in)n(to)f(the)g(\\obtained")f(state,)i(if)f(it)h(is)f
(\\obtained,")291 3430 y Fo(maybe-obtain-lo)o(ck)22 b
Fr(returns)28 b(immediately)-7 b(.)40 b Fo(Maybe-obtain-loc)o(k)23
b Fr(returns)28 b Fo(#t)f Fr(if)i(it)291 3530 y(w)n(as)d(able)h(to)h
(obtain)f(the)h(lo)r(c)n(k,)f(and)h Fo(#f)e Fr(otherwise.)415
3630 y Fo(Release-lock)34 b Fr(do)r(es)k(nothing)h(if)46
b Fq(lo)l(ck)i Fr(is)39 b(in)g(the)g(\\released")e(state.)70
b(If)39 b(it)g(is)g(in)291 3729 y(the)25 b(\\obtained")g(state,)g
Fo(release-lock)c Fr(causes)j(one)h(of)h(the)g(threads)e(susp)r(ended)i
(on)f(an)291 3829 y Fo(obtain-lock)30 b Fr(lo)r(c)n(k)k(op)r(eration)g
(to)g(con)n(tin)n(ue)h(execution.)58 b(If)35 b(that)g(thread)f(is)h
(the)g(last)291 3929 y(thread)29 b(registered)g(with)h(the)h(lo)r(c)n
(k,)f(the)h(lo)r(c)n(k)e(is)h(transferred)f(to)h(the)g(\\released")e
(state.)291 4028 y(In)f(an)n(y)g(case,)g Fo(release-lock)c
Fr(returns)k(immediately)-7 b(.)291 4255 y Fe(7.6.2)112
b(Placeholders)291 4408 y Fr(The)36 b Fo(placeholders)c
Fr(structure)37 b(con)n(tains)e(bindings)i(for)f Fq(plac)l(eholders)7
b Fr(|thread-safe,)291 4508 y(write-once)26 b(v)-5 b(ariables,)26
b(akin)i(to)f(ID-90)g(I-structures)f(or)h(CML)h(I-v)-5
b(ariables.)415 4608 y(The)36 b(t)n(ypical)f(scenario)f(for)h
(placeholders)f(is)i(that,)i(sa)n(y)-7 b(,)36 b(a)g(thread)f(A)h
(computes)f(a)291 4707 y(v)-5 b(alue)23 b(needed)h(b)n(y)f(another)f
(thread)h(B)h(at)f(some)g(unsp)r(eci\014ed)h(time.)36
b(Both)23 b(threads)g(share)291 4807 y(access)31 b(to)h(a)h
(placeholder;)h(when)e(A)h(has)f(computed)h(the)g(v)-5
b(alue,)34 b(it)f(places)f(it)h(in)n(to)g(the)291 4907
y(placeholder.)39 b(When)29 b(B)g(needs)f(the)h(v)-5
b(alue,)29 b(it)g(extracts)f(it)h(from)g(placeholder,)f(blo)r(c)n(king)
291 5006 y(if)g(necessary)-7 b(.)p Black 1681 5255 a(97)p
Black eop end
%%Page: 98 106
TeXDict begin 98 105 bop 0 TeXcolorgray Black Black Black
Black 755 523 a Fn(\017)p Black 42 w Fo(\(make-placehold)o(er)o(\))36
b Fn(!)41 b Fq(plac)l(eholder)p Black 755 623 a Fn(\017)p
Black 42 w Fo(\(make-placehold)o(er)35 b Fq(id)9 b Fo(\))42
b Fn(!)f Fq(plac)l(eholder)p Black 755 722 a Fn(\017)p
Black 42 w Fo(\(placeholder?)j Fq(thing)7 b Fo(\))42
b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 755 822 a Fn(\017)p
Black 42 w Fo(\(placeholder-se)o(t!)35 b Fq(plac)l(eholder)44
b(value)6 b Fo(\))p Black 755 922 a Fn(\017)p Black 42
w Fo(\(placeholder-va)o(lu)o(e)36 b Fq(plac)l(eholder)9
b Fo(\))44 b Fn(!)d Fq(value)739 1089 y Fo(Make-placeholder)26
b Fr(creates)31 b(an)h(empt)n(y)h(placeholder.)50 b(\(The)33
b(optional)e Fq(id)42 b Fr(argumen)n(t)739 1188 y(is)37
b(only)f(for)g(debugging)g(purp)r(oses;)41 b(the)c(discloser)f(for)g
(placeholders)f(prin)n(ts)i(it)g(out)g(if)739 1288 y(presen)n(t.\))f
Fo(Placeholder?)c Fr(is)c(the)g(predicate)f(for)g(placeholders.)863
1388 y Fo(Placeholder-set!)j Fr(places)c(a)g(v)-5 b(alue)26
b(in)n(to)g(a)g(placeholder.)36 b(Doing)26 b(this)h(more)e(than)739
1487 y(once)32 b(signals)g(an)g(error.)50 b Fo(Placeholder-value)26
b Fr(extracts)32 b(the)h(v)-5 b(alue)33 b(from)f(the)h(place-)739
1587 y(holder)c(and)g(returns)f(it.)43 b(If)30 b(the)g(placeholder)e
(is)h(empt)n(y)-7 b(,)30 b(it)g(blo)r(c)n(ks)e(the)i(curren)n(t)f
(thread)739 1687 y(un)n(til)f(it)g(b)r(ecomes)f(full.)739
1963 y Fj(7.7)135 b(W)-11 b(riting)31 b(custom)f(sync)l(hronization)g
(abstractions)739 2146 y Fr(The)24 b(bindings)h(explained)f(in)g(this)h
(section)f(are)f(part)h(of)g(the)h Fo(threads-internal)18
b Fr(struc-)739 2245 y(ture.)41 b(They)29 b(are)f(concerned)h(with)g
(susp)r(ending)g(threads)g(and)g(making)f(them)i(runnable)739
2345 y(again)c(up)r(on)i(some)f(later)g(ev)n(en)n(t.)863
2445 y(T)n(ypically)-7 b(,)33 b(a)e(susp)r(ended)i(thread)e(needs)h(to)
g(b)r(e)h(recorded)d(in)j(a)e(queue)h(somewhere)739 2544
y(for)d(later)g(w)n(aking-up.)42 b(T)-7 b(o)30 b(allo)n(w)e(a)i(thread)
f(to)h(b)r(e)g(recorded)e(in)i(m)n(ultiple)h(queues)e(\(sa)n(y)-7
b(,)739 2644 y(when)31 b(it)g(w)n(aits)g(for)f(one)h(of)g(a)f(n)n(um)n
(b)r(er)h(of)g(ev)n(en)n(ts\),)g(suc)n(h)g Fq(thr)l(e)l(ad)i(queues)38
b Fr(are)30 b(ordinary)739 2744 y(queues)37 b(con)n(taining)g(cells)h
(that,)j(in)d(turn,)i(con)n(tain)e(the)g(thread)f(ob)5
b(jects)38 b(themselv)n(es.)739 2843 y(Eac)n(h)24 b(thread)g(has)h(at)f
(most)h(one)g(suc)n(h)f(cell)h(asso)r(ciated)f(with)h(it)h(whic)n(h)f
(is)f(shared)g(among)739 2943 y(all)29 b(queues)g(\(or)g(other)f(data)h
(structures\))g(holding)g(on)g(to)g(the)h(susp)r(ended)g(thread.)41
b(The)739 3042 y(cell)27 b(is)h(cleared)f(when)g(the)h(thread)f(is)h(w)
n(ok)n(en)e(up.)p Black 755 3210 a Fn(\017)p Black 42
w Fo(\(thread-queue-e)o(mp)o(ty?)43 b Fq(thr)l(e)l(ad-queue)6
b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 755 3309
a Fn(\017)p Black 42 w Fo(\(maybe-dequeue-)o(th)o(rea)o(d!)i
Fq(thr)l(e)l(ad-queue)6 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)739
3476 y Fo(Thread-queue-emp)o(ty)o(?)28 b Fr(atomically)17
b(c)n(hec)n(ks)g(whether)i(the)f Fq(thr)l(e)l(ad-queue)25
b Fr(thread)18 b(queue)739 3576 y(is)29 b(empt)n(y)-7
b(,)31 b(i.e.,)f(if)g(it)g(do)r(es)f(not)h(con)n(tain)e(non-empt)n(y)h
(cells.)43 b Fo(Maybe-dequeue-th)o(re)o(ad!)739 3676
y Fr(pro)n(visionally)24 b(dequeues)j(a)f(thread)g(from)g
Fq(thr)l(e)l(ad-queue)33 b Fr(if)27 b(it)g(con)n(tains)f(one.)36
b(It)27 b(returns)739 3775 y(the)h(dequeued)g(thread)f(or)f
Fo(#f)h Fr(if)h(the)g(queue)g(is)f(empt)n(y)-7 b(.)p
Black 755 3942 a Fn(\017)p Black 42 w Fo(\(maybe-commit-a)o(nd)o(-bl)o
(oc)o(k)36 b Fq(c)l(el)t(l)9 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p
Black 755 4042 a Fn(\017)p Black 42 w Fo(\(maybe-commit-a)o(nd)o(-bl)o
(oc)o(k-o)o(n-)o(que)o(ue)35 b Fq(thr)l(e)l(ad-queue)6
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 755 4141
a Fn(\017)p Black 42 w Fo(\(maybe-commit-a)o(nd)o(-ma)o(ke)o(-re)o(ad)o
(y)35 b Fq(thr)l(e)l(ad-or-queue)6 b Fo(\))42 b Fn(!)f
Fq(b)l(o)l(ole)l(an)739 4309 y Fo(Maybe-commit-and)o(-b)o(loc)o(k)32
b Fr(attempts)39 b(to)g(commit)f(the)h(curren)n(t)f(prop)r(osal.)68
b(If)39 b(this)739 4408 y(succeeds,)32 b(the)g(curren)n(t)e(thread)h
(is)g(blo)r(c)n(k)n(ed,)h(the)g(thread's)e(cell)i(is)f(set)h(to)f
Fq(c)l(el)t(l)9 b Fr(,)33 b(and)e Fo(#t)739 4508 y Fr(is)26
b(returned.)36 b(Otherwise,)26 b Fo(#f)g Fr(is)g(returned.)36
b Fo(Maybe-commit-and)o(-b)o(lo)o(ck-)o(on)o(-qu)o(eu)o(e)20
b Fr(is)739 4607 y(lik)n(e)i Fo(maybe-commit-and)o(-bl)o(oc)o(k)p
Fr(,)c(excepts)k(that)h(it)g(creates)e(a)h(fresh)g(cell)h(for)f(the)h
(thread)739 4707 y(and)k(enqueues)h(it)g(in)g Fq(thr)l(e)l(ad-queue)33
b Fr(if)c(the)e(commit)h(succeeds.)863 4807 y Fo(Maybe-commit-and-)o
(mak)o(e-)o(re)o(ady)23 b Fr(accepts)30 b(either)f(a)h(thread)f(ob)5
b(ject)30 b(or)f(a)h(thread)739 4907 y(queue)e(as)f(an)h(argumen)n(t.)
37 b(In)28 b(either)g(case,)f Fo(maybe-commit-and)o(-m)o(ake)o(-r)o
(ead)o(y)22 b Fr(tries)27 b(to)739 5006 y(commit)c(the)g(curren)n(t)f
(prop)r(osal.)33 b(If)23 b(that)g(succeeds,)g Fo(maybe-commit-and-)o
(ma)o(ke-)o(re)o(ady)p Black 2130 5255 a Fr(98)p Black
eop end
%%Page: 99 107
TeXDict begin 99 106 bop 0 TeXcolorgray Black Black Black
291 523 a Fr(mak)n(es)18 b(its)j(argumen)n(t)d(runnable:)33
b(if)27 b Fq(thr)l(e)l(ad-or-queue)f Fr(is)20 b(a)g(thread,)h(that)f
(thread)f(is)h(made)291 623 y(runnable,)31 b(if)h(it)f(is)g(a)g(thread)
g(queue,)h(all)f(threads)f(on)h(the)g(queue)g(are)f(made)h(runnable.)
291 722 y(\(In)f(the)h(latter)e(case,)h(none)g(of)g(the)g(threads)g
(actually)f(runs)h(un)n(til)g(all)g(ha)n(v)n(e)f(b)r(een)h(made)291
822 y(runnable.\))46 b Fo(Maybe-commit-and)o(-ma)o(ke)o(-re)o(ad)o(y)25
b Fr(returns)30 b Fo(#t)g Fr(if)h(it)h(succeeded,)f(and)g
Fo(#f)291 922 y Fr(otherwise.)291 1195 y Fj(7.8)135 b(Concurren)l(t)45
b(ML)f(abstractions)291 1377 y Fr(The)25 b(in)n(terface)g(to)g(the)h
(Concurren)n(t)e(ML)h(abstractions)f(in)h(Sc)n(heme)h(48)e(is)h(mostly)
g(analo-)291 1477 y(gous)h(to)h(the)h(original)d(implemen)n(tation)j
(shipp)r(ed)f(with)h(SML/NJ)f([)p 0 0 1 TeXcolorrgb(9)p
Black(].)37 b(Note)27 b(that)g(b)r(oth)291 1576 y(the)h(in)n(terface)e
(and)i(implemen)n(tation)g(are)e(new)i(and)f(ma)n(y)g(c)n(hange)g(in)g
(future)h(releases.)415 1676 y(The)23 b(main)h(terminological)d
(di\013erence)i(is)g(that)h(CML)f(ev)n(en)n(ts)f(are)h(called)g
Fq(r)l(endezvous)291 1775 y Fr(in)32 b(Sc)n(heme)f(48.)48
b(F)-7 b(or)32 b(more)e(information)i(on)f(programming)f(with)i(the)g
(CML)g(abstrac-)291 1875 y(tions,)27 b(Repp)n(y's)g(b)r(o)r(ok)h([)p
0 0 1 TeXcolorrgb(9)p Black -1 w(])g(is)f(recommended.)291
2106 y Fe(7.8.1)112 b(Basic)38 b(rendezv)m(ous)g(com)m(binators)291
2260 y Fr(The)27 b(basic)g(rendezv)n(ous)f(com)n(binators)g(liv)n(e)h
(in)h(the)g Fo(rendezvous)c Fr(structure.)p Black 307
2421 a Fn(\017)p Black 41 w Fo(never-rv)2015 b Fr(rendezv)n(ous)p
Black 307 2521 a Fn(\017)p Black 41 w Fo(\(always-rv)38
b Fq(value)6 b Fo(\))41 b Fn(!)h Fq(r)l(endezvous)291
2682 y Fo(Never-rv)27 b Fr(is)k(a)f(rendezv)n(ous)f(that)i(is)g(nev)n
(er)f(enabled)h(for)f(sync)n(hronization.)44 b(\(It)32
b(is)f(the)291 2781 y(same)38 b(as)h(the)h Fo(never)d
Fr(ev)n(en)n(t)i(in)h(CML.\))g Fo(Always-rv)c Fr(returns)i(a)h(rendezv)
n(ous)f(that)i(is)291 2881 y(alw)n(a)n(ys)c(enabled)i(for)f(sync)n
(hronization,)i(and)f(alw)n(a)n(ys)f(yields)h(the)g(same)g(v)-5
b(alue)38 b Fq(value)6 b Fr(.)291 2981 y(\(This)27 b(is)h(the)g(same)f
(as)g(the)h Fo(alwaysEvt)c Fr(function)k(in)g(CML.\))p
Black 307 3142 a Fn(\017)p Black 41 w Fo(\(choose)39
b Fq(r)l(endezvous)j(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41
b Fq(r)l(endezvous)291 3303 y Fo(Choose)23 b Fr(creates)h(a)h(rendezv)n
(ous)f(represen)n(ting)g(the)h(c)n(hoice)g(of)g(its)h(argumen)n(ts:)34
b(Sync)n(hro-)291 3403 y(nization)c(on)g(the)h(resulting)g(rendezv)n
(ous)e(will)i(sync)n(hronize)e(on)h(one)g(of)h(the)g(argumen)n(ts)291
3502 y(to)26 b Fo(choose)p Fr(,)e(dep)r(ending)j(on)f(whic)n(h)h(b)r
(ecomes)f(enabled)g(\014rst.)37 b(\(This)26 b(is)h(the)g(same)f(as)g
(the)291 3602 y Fo(choose)f Fr(function)j(in)g(CML.\))p
Black 307 3763 a Fn(\017)p Black 41 w Fo(\(wrap)40 b
Fq(r)l(endezvous)h(pr)l(o)l(c)5 b Fo(\))42 b Fn(!)f Fq(r)l(endezvous)
291 3925 y Fo(Wrap)36 b Fr(wraps)h(a)g(p)r(ost-sync)n(hronization)f
(pro)r(cedure)h(around)g Fq(r)l(endezvous)7 b Fr(:)58
b(When)39 b(the)291 4024 y(resulting)24 b(rendezv)n(ous)g(is)h(sync)n
(hronized,)g Fq(r)l(endezvous)32 b Fr(is)26 b(sync)n(hronized,)e(and)h
(the)h(v)-5 b(alue)291 4124 y(it)30 b(yields)g(is)h(passed)e(to)h
Fq(pr)l(o)l(c)5 b Fr(;)32 b(the)f(v)-5 b(alue)30 b(returned)g(b)n(y)h
Fq(pr)l(o)l(c)36 b Fr(then)30 b(is)h(the)f(result)g(of)h(the)291
4224 y(sync)n(hronization.)k(\(This)27 b(is)h(the)g(same)f(as)g(the)h
(CML)f Fo(wrap)f Fr(function.\))p Black 307 4385 a Fn(\017)p
Black 41 w Fo(\(guard)39 b Fq(thunk)9 b Fo(\))41 b Fn(!)g
Fq(r)l(endezvous)291 4546 y Fo(Guard)21 b Fr(dela)n(ys)h(the)i
(creation)f(of)g(a)g(rendezv)n(ous)f(un)n(til)i(sync)n(hronization)d
(time:)36 b(It)24 b(returns)291 4646 y(a)e(rendezv)n(ous)f(that)h
(will,)i(up)r(on)f(sync)n(hronization,)f(turn)g(in)n(to)h(the)f
(rendezv)n(ous)f(returned)291 4745 y(b)n(y)34 b Fq(thunk)9
b Fr(.)55 b Fo(Guard)32 b Fr(can)i(b)r(e)g(used)g(to)f(p)r(erform)h
(pre-sync)n(hronization)d(actions)i(suc)n(h)h(as)291
4845 y(resource)25 b(allo)r(cation.)36 b(\(This)28 b(is)g(the)f(same)h
(as)e(the)i(CML)g Fo(guard)e Fr(function.\))p Black 307
5006 a Fn(\017)p Black 41 w Fo(\(with-nack)38 b Fq(pr)l(o)l(c)5
b Fo(\))41 b Fn(!)g Fq(r)l(endezvous)p Black 1681 5255
a Fr(99)p Black eop end
%%Page: 100 108
TeXDict begin 100 107 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(With-nack)p Fr(,)18 b(lik)n(e)h Fo(guard)p
Fr(,)h(creates)e(a)i(dela)n(y)n(ed)f(rendezv)n(ous:)31
b(Up)r(on)20 b(sync)n(hronization,)g(the)739 623 y(rendezv)n(ous)28
b(actually)h(used)g(is)h(the)g(one)f(returned)g(b)n(y)h
Fq(pr)l(o)l(c)5 b Fr(.)43 b(In)30 b(addition)g(to)f(the)h(func-)739
722 y(tionalit)n(y)i(o\013ered)g(b)n(y)h Fo(guard)p Fr(,)f
Fq(pr)l(o)l(c)38 b Fr(receiv)n(es,)32 b(as)g(an)g(argumen)n(t,)h
(another)f(rendezv)n(ous)739 822 y(whic)n(h)e(b)r(ecomes)f(enabled)h
(when)g Fq(another)40 b Fr(rendezv)n(ous)28 b(in)n(v)n(olv)n(ed)h(in)h
(the)g(sync)n(hroniza-)739 922 y(tion)i(\(via)g Fo(choose)p
Fr(\))e(is)i(pic)n(k)n(ed)g(instead)g(of)g(the)h(one)f(pro)r(duced)g(b)
n(y)h Fq(pr)l(o)l(c)5 b Fr(.)51 b(\(This)33 b(is)f(the)739
1021 y(same)27 b(as)g(the)h(CML)f Fo(withNack)e Fr(function.\))p
Black 755 1163 a Fn(\017)p Black 42 w Fo(\(sync)39 b
Fq(r)l(endezvous)7 b Fo(\))41 b Fn(!)h Fq(value)p Black
755 1262 a Fn(\017)p Black 42 w Fo(\(select)c Fq(r)l(endezvous)k(.)13
b(.)g(.)g Fo(\))51 b Fn(!)41 b Fq(value)739 1404 y Fo(Sync)28
b Fr(sync)n(hronizes)g(the)i(curren)n(t)f(thread)g(on)g(rendezv)n(ous)f
Fq(r)l(endezvous)7 b Fr(,)31 b(returning)e(the)739 1503
y(v)-5 b(alue)27 b(it)h(yields.)37 b Fo(Select)24 b Fr(sync)n(hronizes)
i(on)h(the)h(c)n(hoice)e(of)i(its)f(argumen)n(t;)g Fo(\(select)40
b Fc(r)3565 1515 y Fk(1)739 1603 y Fo(...)p Fc(r)908
1615 y Fa(n)952 1603 y Fo(\))30 b Fr(is)g(seman)n(tically)f(equiv)-5
b(alen)n(t)30 b(to)g Fo(\(sync)41 b(\(choose)g(select)g
Fc(r)3043 1615 y Fk(1)3124 1603 y Fo(...)p Fc(r)3293
1615 y Fa(n)3338 1603 y Fo(\)\))p Fr(,)30 b(but)739 1703
y(ma)n(y)20 b(b)r(e)h(implemen)n(ted)g(more)f(e\016cien)n(tly)-7
b(.)34 b(\(These)21 b(are)e(the)i(same)f(as)g(the)h(CML)g(functions)739
1802 y Fo(sync)26 b Fr(and)h Fo(select)p Fr(.\))739 2029
y Fe(7.8.2)112 b(Sync)m(hronous)39 b(c)m(hannels)739
2183 y Fr(The)j Fo(rendezvous-chann)o(els)35 b Fr(structure)42
b(con)n(tains)f(abstractions)f(for)i(bidirectional,)739
2282 y(sync)n(hronous)26 b(c)n(hannels)g(for)h(comm)n(unicating)g(b)r
(et)n(w)n(een)h(t)n(w)n(o)f(threads.)p Black 755 2424
a Fn(\017)p Black 42 w Fo(\(make-channel\))35 b Fn(!)42
b Fq(channel)p Black 755 2523 a Fn(\017)p Black 42 w
Fo(\(channel?)k Fq(x)10 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)739
2665 y Fo(Make-channel)32 b Fr(creates)j(a)h(new)h(sync)n(hronous)d(c)n
(hannel.)64 b(\(This)37 b(is)f(the)h(same)f(as)g(the)739
2765 y(CML)28 b Fo(channel)c Fr(function.\))38 b Fo(Channel?)c
Fr(is)27 b(the)h(predicate)f(for)g(sync)n(hronous)f(c)n(hannels.)p
Black 755 2906 a Fn(\017)p Black 42 w Fo(\(send-rv)38
b Fq(channel)k(value)6 b Fo(\))42 b Fn(!)g Fq(r)l(endezvous)p
Black 755 3006 a Fn(\017)p Black 42 w Fo(\(send)d Fq(channel)j(value)6
b Fo(\))739 3147 y(Send-rv)25 b Fr(creates)i(a)g(rendezv)n(ous)f(that,)
i(up)r(on)h(sync)n(hronization,)d(sends)h(message)g Fq(value)739
3247 y Fr(on)32 b(the)h(sync)n(hronous)e(c)n(hannel)h
Fq(channel)9 b Fr(.)52 b(The)32 b(sync)n(hronization)f(suceeds)h(only)g
(when)739 3347 y(another)c(thread)g(attempts)h(to)f(receiv)n(e)g(a)g
(message)f(from)h Fq(channel)9 b Fr(.)40 b(\(This)29
b(is)g(the)g(same)739 3446 y(as)23 b(the)h(CML)g Fo(sendEvt)d
Fr(function.\))37 b Fo(Send)22 b Fr(directly)i(sends)f(a)h(message)e
Fq(value)31 b Fr(on)24 b(c)n(hannel)739 3546 y Fq(channel)9
b Fr(;)48 b Fo(\(send)41 b Fc(c)j(v)s Fo(\))c Fr(is)h(equiv)-5
b(alen)n(t)40 b(to)h Fo(\(sync)g(\(send-rv)g Fc(c)i(v)s
Fo(\)\))p Fr(.)76 b(\()p Fo(Send)39 b Fr(is)i(the)739
3645 y(same)27 b(as)g(the)h(CML)f Fo(send)f Fr(function.\))p
Black 755 3787 a Fn(\017)p Black 42 w Fo(\(receive-rv)36
b Fq(channel)9 b Fo(\))42 b Fn(!)g Fq(r)l(endezvous)p
Black 755 3887 a Fn(\017)p Black 42 w Fo(\(receive)c
Fq(channel)9 b Fo(\))739 4028 y(Receive-rv)23 b Fr(creates)k(a)g
(rendezv)n(ous)f(whic)n(h,)h(up)r(on)h(sync)n(hronization,)e(receiv)n
(es)g(a)h(mes-)739 4128 y(sage)38 b(on)h(c)n(hannel)g
Fq(channel)9 b Fr(.)72 b(\(This)39 b(is)h(the)f(same)g(as)g(the)g(CML)g
Fo(recEvt)e Fr(function.\))739 4227 y Fo(Receive)j Fr(directly)i
(receiv)n(es)f(a)h(message)f(on)h(c)n(hannel)g Fq(channel)9
b Fr(;)50 b Fo(\(receive)41 b Fc(c)i(v)s Fo(\))f Fr(is)739
4327 y(equiv)-5 b(alen)n(t)35 b(to)g Fo(\(sync)41 b(\(receive-rv)e
Fc(c)44 b(v)s Fo(\)\))p Fr(.)58 b(\()p Fo(Receive)33
b Fr(is)i(the)g(same)f(as)h(the)g(CML)739 4427 y Fo(recv)26
b Fr(function.\))739 4654 y Fe(7.8.3)112 b(Sync)m(hronous)39
b(v)-6 b(ariables)739 4807 y Fr(Tw)n(o)17 b(structures)h(con)n(tain)g
(abstractions)f(for)g(sync)n(hronous)g(v)-5 b(ariables:)31
b(the)18 b Fo(rendezvous-placeh)o(old)o(er)o(s)739 4907
y Fr(structure)g(for)g(so-called)f Fq(plac)l(eholders)28
b Fr(\(write-once)17 b(v)-5 b(ariables\),)20 b(and)e(the)g
Fo(rendezvous-jars)739 5006 y Fr(structure)27 b(for)g
Fq(jars)35 b Fr(\(whic)n(h)28 b(allo)n(w)f(m)n(ultiple)h(up)r(dates.\))
p Black 2109 5255 a(100)p Black eop end
%%Page: 101 109
TeXDict begin 101 108 bop 0 TeXcolorgray Black Black
Black 291 523 a Fm(Placeholders)291 681 y Fr(Placeholders)35
b(are)i(write-once)g(v)-5 b(ariables.)66 b(The)38 b(placeholders)f
(implemen)n(ted)h(b)n(y)g(the)291 781 y Fo(rendezvous-plac)o(eho)o(ld)o
(er)o(s)15 b Fr(structure)20 b(o\013er)h(equiv)-5 b(alen)n(t)21
b(functionalit)n(y)g(to)f(the)i(place-)291 880 y(holders)36
b(implemen)n(ted)h(b)n(y)g(the)g Fo(placeholders)32 b
Fr(structure)k(\(see)h(Section)p 0 0 1 TeXcolorrgb 37
w(7.6.2)p Black(\),)h(but)291 980 y(additionally)31 b(allo)n(w)f(con)n
(v)n(erting)g(a)i(placeholder)e(in)n(to)i(a)f(rendezv)n(ous.)48
b(Note,)33 b(ho)n(w)n(ev)n(er,)291 1080 y(that)20 b(placeholders)e
(from)i Fo(placeholders)15 b Fr(are)k(di\013eren)n(t)h(from)g(and)g
(not)g(in)n(terc)n(hangeable)291 1179 y(with)28 b(placeholders)e(from)h
Fo(rendezvous-place)o(hol)o(de)o(rs)p Fr(.)p Black 307
1353 a Fn(\017)p Black 41 w Fo(\(make-placeholder)o(\))35
b Fn(!)42 b Fq(plac)l(eholder)p Black 307 1453 a Fn(\017)p
Black 41 w Fo(\(make-placeholder)35 b Fq(id)9 b Fo(\))41
b Fn(!)h Fq(plac)l(eholder)p Black 307 1552 a Fn(\017)p
Black 41 w Fo(\(placeholder?)j Fq(x)10 b Fo(\))40 b Fn(!)i
Fq(b)l(o)l(ole)l(an)291 1726 y Fo(Make-placeholde)o(r)26
b Fr(creates)32 b(an)g(empt)n(y)g(placeholder.)51 b(\(The)32
b(optional)g Fq(id)42 b Fr(argumen)n(t)291 1825 y(is)36
b(only)h(for)f(debugging)g(purp)r(oses;)41 b(the)c(discloser)e(for)i
(placeholders)e(prin)n(ts)h(it)i(out)e(if)291 1925 y(presen)n(t.\))43
b(\(This)31 b(is)e(the)i(same)e(as)h(the)g(CML)g Fo(iVar)f
Fr(function.\))44 b Fo(Placeholder?)c Fr(is)30 b(the)291
2025 y(predicate)d(for)g(placeholders.)p Black 307 2198
a Fn(\017)p Black 41 w Fo(\(placeholder-set!)35 b Fq(plac)l(eholder)44
b(value)6 b Fo(\))291 2372 y(Placeholder-set)o(!)55 b
Fr(places)35 b(a)h(v)-5 b(alue)35 b(in)n(to)h(a)f(placeholder.)60
b(Doing)36 b(this)g(more)f(than)291 2472 y(once)27 b(signals)f(an)h
(error.)35 b(\(This)28 b(is)g(the)g(same)f(as)g(the)h(CML)f
Fo(iPut)f Fr(function.\))p Black 307 2645 a Fn(\017)p
Black 41 w Fo(\(placeholder-valu)o(e-)o(rv)35 b Fq(plac)l(eholder)9
b Fo(\))44 b Fn(!)e Fq(r)l(endezvous)p Black 307 2745
a Fn(\017)p Black 41 w Fo(\(placeholder-valu)o(e)35 b
Fq(plac)l(eholder)9 b Fo(\))44 b Fn(!)e Fq(value)291
2919 y Fo(Placeholder-val)o(ue)23 b Fr(extracts)29 b(the)h(v)-5
b(alue)30 b(from)f(the)h(placeholder)e(and)i(returns)f(it.)43
b(If)291 3018 y(the)21 b(placeholder)f(is)g(empt)n(y)-7
b(,)23 b(it)e(blo)r(c)n(ks)f(the)i(curren)n(t)e(thread)g(un)n(til)h(it)
h(b)r(ecomes)e(full.)36 b(\(This)291 3118 y(is)26 b(the)h(same)f(as)f
(the)i(CML)g Fo(iGet)e Fr(function.\))37 b Fo(Placeholder-valu)o(e-r)o
(v)20 b Fr(creates)26 b(a)g(ren-)291 3218 y(dezv)n(ous)d(that)j(will,)g
(up)r(on)f(sync)n(hronization,)e(extract)i(the)g(v)-5
b(alue)25 b(from)g(the)g(placeholder)291 3317 y(and)i(yield)h(it)g(as)f
(a)g(result.)36 b(\(This)28 b(is)g(the)g(same)f(as)g(the)h(CML)f
Fo(iGetEvt)e Fr(function.\))291 3547 y Fm(Jars)291 3705
y Fr(A)31 b(jar)f(is)h(a)g(sync)n(hronous)e(v)-5 b(ariable)30
b(whic)n(h)g(can)h(ha)n(v)n(e)f(t)n(w)n(o)g(states:)43
b(full)32 b(and)e(empt)n(y)-7 b(.)48 b(It)291 3804 y(b)r(ecomes)34
b(full)h(when)f(a)g(v)-5 b(alue)34 b(it)h(put)g(in)n(to)f(it;)39
b(putting)c(a)f(v)-5 b(alue)34 b(in)n(to)g(a)g(full)h(jar)f(is)g(an)291
3904 y(error.)j(Con)n(v)n(ersely)-7 b(,)27 b(it)i(b)r(ecomes)f(empt)n
(y)g(when)h(a)f(v)-5 b(alue)28 b(is)h(tak)n(en)f(out)g(of)g(it.)40
b(T)-7 b(rying)28 b(to)291 4004 y(tak)n(e)g(a)h(v)-5
b(alue)30 b(out)f(of)g(an)g(empt)n(y)h(jar)f(blo)r(c)n(ks)f(un)n(til)i
(it)g(b)r(ecomes)f(full.)43 b(\(Jars)28 b(are)h(similar)291
4103 y(to)e(ID-90)g(M-structures.\))36 b(Jars)26 b(liv)n(e)h(in)h(the)g
Fo(rendezvous-jars)22 b Fr(structure.)p Black 307 4277
a Fn(\017)p Black 41 w Fo(\(make-jar\))38 b Fn(!)j Fq(jar)p
Black 307 4377 a Fn(\017)p Black 41 w Fo(\(make-jar)d
Fq(id)9 b Fo(\))42 b Fn(!)f Fq(jar)p Black 307 4476 a
Fn(\017)p Black 41 w Fo(\(jar?)48 b Fq(x)10 b Fo(\))41
b Fn(!)g Fq(b)l(o)l(ole)l(an)291 4650 y Fo(Make-jar)17
b Fr(creates)i(an)h(empt)n(y)h(jar.)34 b(\(The)21 b(optional)e
Fq(id)30 b Fr(argumen)n(t)20 b(is)g(only)g(for)g(debugging)291
4749 y(purp)r(oses;)25 b(the)g(discloser)e(for)i(jars)f(prin)n(ts)g(it)
h(out)g(if)g(presen)n(t.\))36 b(\(This)25 b(is)g(the)g(same)f(as)h(the)
291 4849 y(CML)i Fo(mVar)f Fr(function.\))38 b Fo(Jar?)d
Fr(is)28 b(the)g(predicate)f(for)g(jars.)p Black 307
5006 a Fn(\017)p Black 41 w Fo(\(jar-put!)38 b Fq(jar)k(value)6
b Fo(\))p Black 1660 5255 a Fr(101)p Black eop end
%%Page: 102 110
TeXDict begin 102 109 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(Jar-put!)38 b Fr(places)28 b(a)h(v)-5
b(alue)28 b(in)n(to)h(a)g(jar)f(if)i(it)f(is)g(empt)n(y)-7
b(.)41 b(Applying)30 b Fo(jar-put!)38 b Fr(to)29 b(a)g(full)739
623 y(jar)e(is)g(an)h(error.)35 b(\(This)28 b(is)f(the)h(same)f(as)g
(the)h(CML)g Fo(mPut)e Fr(function.\))p Black 755 789
a Fn(\017)p Black 42 w Fo(\(jar-take-rv)36 b Fq(plac)l(eholder)9
b Fo(\))44 b Fn(!)e Fq(r)l(endezvous)p Black 755 888
a Fn(\017)p Black 42 w Fo(\(jar-take)37 b Fq(plac)l(eholder)9
b Fo(\))44 b Fn(!)e Fq(value)739 1054 y Fo(Jar-take)30
b Fr(tak)n(es)i(a)h(v)-5 b(alue)33 b(from)g(a)g(full)g(jar,)i(empt)n
(ying)d(it)i(in)g(the)f(pro)r(cess.)53 b(If)33 b(the)h(jar)739
1154 y(is)28 b(empt)n(y)-7 b(,)28 b Fo(jar-take)d Fr(blo)r(c)n(ks)i(un)
n(til)i(it)f(b)r(ecomes)g(full.)38 b(\(This)29 b(is)f(the)g(same)f(as)h
(the)g(CML)739 1254 y Fo(mTake)18 b Fr(function.\))35
b Fo(Jar-take-rv)16 b Fr(creates)j(a)g(rendezv)n(ous)g(that,)j(up)r(on)
e(sync)n(hronization,)739 1353 y(will)27 b(extract)f(the)h(v)-5
b(alue)26 b(from)h(a)f(jar)g(and)g(empt)n(y)h(it)g(in)g(the)g(pro)r
(cess.)35 b(\(This)27 b(is)g(the)g(same)739 1453 y(as)g(the)h(CML)f
Fo(mTakeEvt)e Fr(function.\))739 1685 y Fe(7.8.4)112
b(Timeouts)739 1839 y Fr(The)19 b Fo(rendezvous-time)12
b Fr(structure)18 b(allo)n(ws)g(creating)f(rendezv)n(ous)g(for)h
(alarms)g(and)g(time-)739 1938 y(outs:)p Black 755 2104
a Fn(\017)p Black 42 w Fo(\(after-time-rv)35 b Fq(mil)t(lise)l(c)l
(onds)7 b Fo(\))43 b Fn(!)f Fq(r)l(endezvous)p Black
755 2204 a Fn(\017)p Black 42 w Fo(\(at-real-time-r)o(v)35
b Fq(time)6 b Fo(\))42 b Fn(!)f Fq(r)l(endezvous)739
2370 y Fo(After-time-rv)17 b Fr(creates)k(a)h(rendezv)n(ous)f(that)i(b)
r(ecomes)f(enabled)h(at)f(time)h(in)n(terv)-5 b(al)22
b Fq(mil-)739 2470 y(lise)l(c)l(onds)40 b Fr(after)32
b(sync)n(hronization.)50 b(\(Actually)-7 b(,)34 b Fq(mil)t(lise)l(c)l
(onds)41 b Fr(is)33 b(a)f(minim)n(um)h(w)n(aiting)739
2569 y(time;)22 b(the)d(actual)f(dela)n(y)g(ma)n(y)g(b)r(e)h(longer.\))
33 b(\(This)19 b(is)f(the)i(same)e(as)g(the)h(CML)f Fo(timeOutEvt)739
2669 y Fr(function.\))42 b Fo(At-real-time-rv)24 b Fr(creates)k(a)g
(rendezv)n(ous)g(that)i(b)r(ecomes)e(enabled)h(at)h(an)739
2768 y(absolute)c(time)i(sp)r(eci\014ed)f(b)n(y)h Fq(time)6
b Fr(;)28 b(this)g(absolute)e(time)i(is)f(sp)r(eci\014ed)g(in)g(the)h
(same)e(w)n(a)n(y)739 2868 y(as)32 b(the)g(return)g(v)-5
b(alue)32 b Fo(real-time)d Fr(from)j(the)h Fo(time)d
Fr(structure.)51 b(\(This)32 b(is)g(the)h(same)f(as)739
2968 y(the)c(CML)g Fo(atTimeEvt)23 b Fr(function.\))739
3200 y Fe(7.8.5)112 b(CML)38 b(to)f(Sc)m(heme)i(corresp)s(ondence)739
3353 y Fr(The)27 b(follo)n(wing)f(table)h(lists)g(the)g(Sc)n(heme)g
(names)g(that)g(corresp)r(ond)f(to)g(particular)g(CML)739
3453 y(names.)1467 3622 y(CML)i(name)126 b(Sc)n(heme)27
b(name)p 1418 3655 1507 4 v 1418 3655 V 1953 3725 a Fo(rendezvous)1467
3825 y(never)316 b(never-rv)1467 3924 y(alwaysEvt)140
b(always-rv)1467 4024 y(choose)272 b(choose)1467 4124
y(wrap)360 b(wrap)1467 4223 y(guard)316 b(guard)1467
4323 y(withNack)184 b(with-nack)1467 4423 y(sync)360
b(sync)1467 4522 y(select)272 b(select)1757 4658 y(rendezvous-chann)o
(els)1467 4757 y(channel)228 b(make-channel)1467 4857
y(sendEvt)g(send-rv)1467 4956 y(send)360 b(send)p Black
2109 5255 a Fr(102)p Black eop end
%%Page: 103 111
TeXDict begin 103 110 bop 0 TeXcolorgray Black Black
Black 1019 523 a Fo(recEvt)272 b(receive-rv)1019 623
y(rec)404 b(receive)1221 758 y(rendezvous-placeh)o(old)o(er)o(s)1019
858 y(iVar)360 b(make-placeholde)o(r)1019 957 y(iPut)g(placeholder-set)
o(!)1019 1057 y(iGet)g(placeholder-val)o(ue)1019 1157
y(iGetEvt)228 b(placeholder-val)o(ue-)o(rv)1396 1292
y(rendezvous-jars)1019 1392 y(mVar)360 b(make-jar)1019
1491 y(mTake)316 b(jar-take)1019 1591 y(mTakeEvt)184
b(jar-take-rv)1019 1690 y(mPut)360 b(jar-put!)1396 1826
y(rendezvous-time)1019 1925 y(timeOutEvt)96 b(after-time-rv)1019
2025 y(atTimeEvt)140 b(at-real-time-rv)p Black 1660 5255
a Fr(103)p Black eop end
%%Page: 104 112
TeXDict begin 104 111 bop 0 TeXcolorgray Black Black
Black 739 1146 a Fl(Chapter)65 b(8)739 1562 y Fp(Mixing)77
b(Sc)-6 b(heme)77 b(48)h(and)f(C)739 1994 y Fr(This)21
b(c)n(hapter)g(describ)r(es)g(the)h(foreign-function)f(in)n(terface)f
(for)h(calling)g(C)h(functions)g(from)739 2094 y(Sc)n(heme,)k(calling)f
(Sc)n(heme)h(functions)g(from)f(C,)h(and)g(allo)r(cating)e(storage)g
(in)i(the)g(Sc)n(heme)739 2193 y(heap.)34 b(Sc)n(heme)21
b(48)f(manages)f(stub)i(functions)g(in)g(C)g(that)g(negotiate)f(b)r(et)
n(w)n(een)h(the)g(calling)739 2293 y(con)n(v)n(en)n(tions)f(of)h(Sc)n
(heme)h(and)g(C)f(and)h(the)g(memory)f(allo)r(cation)f(p)r(olicies)i
(of)f(b)r(oth)h(w)n(orlds.)739 2393 y(No)27 b(stub)h(generator)e(is)h
(a)n(v)-5 b(ailable)27 b(y)n(et,)g(but)h(writing)f(stubs)h(is)g(a)f
(straigh)n(tforw)n(ard)d(task.)863 2493 y(The)40 b(foreign-function)f
(in)n(terface)g(is)g(mo)r(deled)h(after)f(the)h(Ja)n(v)-5
b(a)39 b(Nativ)n(e)g(In)n(terface)739 2593 y(\(JNI\),)33
b(more)e(information)g(can)h(b)r(e)h(found)f(at)64 b(h)n(ttp://ja)n(v)
-5 b(a.sun.com/ja)n(v)g(ase/6/do)r(cs-)739 2692 y(/tec)n
(hnotes/guides/jni/index.h)n(tml.)863 2792 y(Curren)n(tly)e(,)48
b(Sc)n(heme)d(48)e(supp)r(orts)i(t)n(w)n(o)e(foreign-function)h(in)n
(terfaces:)70 b(The)44 b(old)739 2892 y(GCPR)n(OTECT-st)n(yle)38
b(and)j(the)g(new)f(JNI-st)n(yle)g(in)n(terface)g(\(this)h(c)n
(hapter\))f(liv)n(e)g(side)739 2992 y(b)n(y)33 b(side.)53
b(The)33 b(old)g(in)n(terface)f(is)h(deprecated)g(and)g(will)g(go)f(a)n
(w)n(a)n(y)f(in)i(a)g(future)h(release.)739 3091 y(Section)p
0 0 1 TeXcolorrgb 23 w(8.12)p Black 23 w(giv)n(es)22
b(a)h(recip)r(e)g(ho)n(w)g(to)h(con)n(v)n(ert)e(external)g(co)r(de)i
(from)f(the)h(old)f(to)g(the)h(new)739 3191 y(in)n(terface.)739
3468 y Fj(8.1)135 b(Av)-7 b(ailable)46 b(facilities)739
3651 y Fr(The)28 b(follo)n(wing)e(facilities)i(are)e(a)n(v)-5
b(ailable)27 b(for)g(in)n(terfacing)f(b)r(et)n(w)n(een)i(Sc)n(heme)f
(48)g(and)h(C:)p Black 863 3819 a Fn(\017)p Black 41
w Fr(Sc)n(heme)g(co)r(de)f(can)h(call)f(C)g(functions.)p
Black 863 3987 a Fn(\017)p Black 41 w Fr(The)32 b(external)f(in)n
(terface)g(pro)n(vides)f(full)j(in)n(trosp)r(ection)e(for)g(all)g(Sc)n
(heme)h(ob)5 b(jects.)946 4087 y(External)25 b(co)r(de)g(ma)n(y)g(insp)
r(ect,)i(mo)r(dify)-7 b(,)27 b(and)e(allo)r(cate)g(Sc)n(heme)g(ob)5
b(jects)25 b(arbitrar-)946 4186 y(ily)-7 b(.)p Black
863 4355 a Fn(\017)p Black 41 w Fr(External)27 b(co)r(de)g(ma)n(y)g
(raise)g(exceptions)g(bac)n(k)f(to)i(Sc)n(heme)f(48)g(to)g(signal)g
(errors.)p Black 863 4523 a Fn(\017)p Black 41 w Fr(External)c(co)r(de)
h(ma)n(y)f(call)g(bac)n(k)g(in)n(to)h(Sc)n(heme.)35 b(Sc)n(heme)24
b(48)f(correctly)f(unrolls)h(the)946 4623 y(pro)r(cess)k(stac)n(k)g(on)
g(non-lo)r(cal)f(exits.)p Black 863 4791 a Fn(\017)p
Black 41 w Fr(External)f(mo)r(dules)h(ma)n(y)f(register)f(bindings)i
(of)f(names)h(to)f(v)-5 b(alues)26 b(with)g(a)f(cen)n(tral)946
4890 y(registry)37 b(accessible)g(from)h(Sc)n(heme.)68
b(Con)n(v)n(ersely)-7 b(,)38 b(Sc)n(heme)g(co)r(de)g(can)g(register)946
4990 y(shared)27 b(bindings)h(for)f(access)f(b)n(y)h(C)h(co)r(de.)p
Black 2109 5255 a(104)p Black eop end
%%Page: 105 113
TeXDict begin 105 112 bop 0 TeXcolorgray Black Black
Black 291 523 a Fe(8.1.1)112 b(Sc)m(heme)38 b(structures)291
686 y Fr(The)i(structure)g Fo(external-calls)35 b Fr(has)40
b(most)g(of)g(the)h(Sc)n(heme)f(functions)h(describ)r(ed)291
786 y(here.)36 b(The)28 b(others)f(are)f(in)i Fo(load-dynamic-ext)o
(ern)o(al)o(s)p Fr(,)22 b(whic)n(h)27 b(has)g(the)h(functions)g(for)291
885 y(dynamic)38 b(loading)g(and)g(name)h(lo)r(okup)f(from)g(Section)p
0 0 1 TeXcolorrgb 39 w(8.4)p Black(,)i(and)f Fo(shared-bindings)p
Fr(,)291 985 y(whic)n(h)27 b(has)g(the)h(additional)f(shared-binding)g
(functions)h(describ)r(ed)f(in)h(section)p 0 0 1 TeXcolorrgb
27 w(8.2.3)p Black(.)291 1245 y Fe(8.1.2)112 b(C)37 b(naming)i(con)m(v)
m(en)m(tions)291 1408 y Fr(The)30 b(names)g(of)g(all)g(of)h(Sc)n(heme)f
(48's)f(visible)h(C)h(bindings)f(b)r(egin)g(with)h(`)p
Fo(s48)p 2766 1408 27 4 v 30 w Fr(')g(\(for)f(pro-)291
1508 y(cedures,)k(v)-5 b(ariables,)33 b(and)h(macros\).)53
b(Note)33 b(that)h(the)f(new)h(foreign-function)f(in)n(terface)291
1608 y(do)r(es)f(not)h(distinguish)g(b)r(et)n(w)n(een)g(pro)r(cedures)f
(and)h(macros.)51 b(Whenev)n(er)33 b(a)f(C)h(name)g(is)291
1707 y(deriv)n(ed)c(from)i(a)f(Sc)n(heme)h(iden)n(ti\014er,)g(w)n(e)f
(replace)g(`)p Fo(-)p Fr(')g(with)i(`)p 2283 1707 V 31
w(')f(and)f(con)n(v)n(ert)g(letters)g(to)291 1807 y(lo)n(w)n(ercase.)52
b(A)34 b(\014nal)g(`)p Fo(?)p Fr(')55 b(con)n(v)n(erted)32
b(to)i(`)p 1656 1807 V 31 w Fo(p)p Fr(',)h(a)e(\014nal)h(`)p
Fo(!)p Fr(')55 b(is)33 b(dropp)r(ed.)55 b(As)34 b(a)f(naming)291
1907 y(con)n(v)n(en)n(tion,)d(all)h(functions)g(and)g(macros)f(of)h
(the)g(new)g(foreign-function)f(in)n(terface)h(end)291
2006 y(in)24 b(`)p 412 2006 V 31 w Fo(2)p Fr(')g(\(for)f(no)n(w\))h(to)
f(mak)n(e)g(them)i(distinguishable)e(from)h(the)g(old)g(in)n(terface's)
f(functions)291 2106 y(and)33 b(macros.)52 b(Th)n(us)32
b(the)i(C)f(macro)f(for)h(Sc)n(heme's)f Fo(pair?)52 b
Fr(is)33 b Fo(s48)p 2490 2106 V 30 w(pair)p 2696 2106
V 30 w(p)p 2770 2106 V 31 w(2)g Fr(and)g(the)291 2205
y(one)28 b(for)g Fo(set-car!)36 b Fr(is)29 b Fo(s48)p
1182 2205 V 30 w(set)p 1344 2205 V 30 w(car)p 1506 2205
V 30 w(2)p Fr(.)40 b(Pro)r(cedures)27 b(and)h(macros)f(that)i(do)f(not)
h(c)n(hec)n(k)291 2305 y(the)f(t)n(yp)r(es)f(of)h(their)f(argumen)n(ts)
f(ha)n(v)n(e)h(`)p Fo(unsafe)p Fr(')e(in)j(their)g(names.)415
2410 y(All)j(of)f(the)h(C)f(functions)g(and)h(macros)d(describ)r(ed)i
(ha)n(v)n(e)f(protot)n(yp)r(es)g(or)h(de\014nitions)291
2510 y(in)d(the)h(\014le)g Fo(c/scheme48.h)p Fr(.)291
2770 y Fe(8.1.3)112 b(Garbage)39 b(collection)e(and)i(reference)e(ob)6
b(jects)291 2933 y Fr(Sc)n(heme)24 b(48)g(uses)h(a)f(precise,)h(cop)n
(ying)e(garbage)g(collector.)35 b(The)25 b(garbage)d(collector)i(ma)n
(y)291 3033 y(run)34 b(whenev)n(er)g(an)g(ob)5 b(ject)34
b(is)h(allo)r(cated)e(in)i(the)g(heap.)58 b(The)34 b(collector)g(m)n
(ust)g(b)r(e)h(able)291 3132 y(to)c(lo)r(cate)g(all)f(references)h(to)g
(ob)5 b(jects)30 b(allo)r(cated)h(in)g(the)h(Sc)n(heme)f(48)g(heap)g
(in)g(order)f(to)291 3232 y(ensure)j(that)h(storage)e(is)h(not)h
(reclaimed)f(prematurely)g(and)h(to)f(up)r(date)h(references)f(to)291
3332 y(ob)5 b(jects)29 b(mo)n(v)n(ed)h(b)n(y)g(the)g(collector.)44
b(This)30 b(in)n(terface)g(tak)n(es)f(care)g(of)i(comm)n(unicating)e
(to)291 3431 y(the)36 b(garbage)e(collector)h(what)h(ob)5
b(jects)36 b(it)h(uses)e(in)i(most)f(situations.)62 b(It)37
b(reliev)n(es)e(the)291 3531 y(programmer)c(from)j(ha)n(ving)g(to)g
(think)h(ab)r(out)f(garbage)e(collector)h(in)n(teractions)g(in)i(the)
291 3630 y(common)27 b(case.)415 3735 y(This)k(in)n(terface)f(do)r(es)h
(not)g(giv)n(e)f(external)g(co)r(de)g(direct)h(access)f(to)h(Sc)n(heme)
f(ob)5 b(jects.)291 3835 y(It)30 b(in)n(tro)r(duces)g(one)g(lev)n(el)g
(of)g(indirection)g(as)g(external)g(co)r(de)g(nev)n(er)f(accepts)h(or)g
(returns)291 3935 y(Sc)n(heme)f(v)-5 b(alues)29 b(directly)-7
b(.)43 b(Instead,)29 b(external)g(co)r(de)g(accepts)g(or)g(returns)g
Fq(r)l(efer)l(enc)l(e)j(ob-)291 4034 y(je)l(cts)k Fr(of)30
b(t)n(yp)r(e)f Fo(s48)p 908 4034 V 31 w(ref)p 1071 4034
V 30 w(t)g Fr(that)h(refer)f(to)g(Sc)n(heme)g(v)-5 b(alues)30
b(\(their)f(C)h(t)n(yp)r(e)g(is)f(de\014ned)h(to)291
4134 y(b)r(e)25 b Fo(s48)p 538 4134 V 30 w(value)p Fr(\).)34
b(This)25 b(indirection)g(is)f(only)h(needed)g(as)f(an)g(in)n(terface)g
(to)h(external)f(co)r(de,)291 4233 y(in)n(terior)i(p)r(oin)n(ters)h(in)
h(Sc)n(heme)f(ob)5 b(jects)27 b(are)g(una\013ected.)415
4338 y(There)g(are)g(t)n(w)n(o)g(t)n(yp)r(es)g(of)h(reference)e(ob)5
b(jects:)p Black 291 4520 a Fm(lo)s(cal)31 b(references)p
Black 41 w Fr(A)h(lo)r(cal)f(reference)g(is)g(v)-5 b(alid)32
b(for)f(the)h(duration)f(of)g(a)g(function)h(call)498
4620 y(from)22 b(Sc)n(heme)h(to)f(external)f(co)r(de)i(and)f(is)g
(automatically)g(freed)g(after)g(the)h(external)498 4719
y(function)28 b(returns)f(to)h(the)g(virtual)f(mac)n(hine.)p
Black 291 4907 a Fm(global)j(references)p Black 42 w
Fr(A)c(global)f(reference)g(remains)h(v)-5 b(alid)26
b(un)n(til)g(external)f(co)r(de)h(explic-)498 5006 y(itly)i(frees)f
(it.)p Black 1660 5255 a(105)p Black eop end
%%Page: 106 114
TeXDict begin 106 113 bop 0 TeXcolorgray Black Black
Black 739 523 a Fr(Sc)n(heme)30 b(ob)5 b(jects)29 b(that)h(are)f
(passed)g(to)h(external)f(functions)i(are)e(passed)g(as)g(lo)r(cal)g
(refer-)739 623 y(ences.)49 b(External)31 b(functions)h(return)g(Sc)n
(heme)g(ob)5 b(jects)31 b(as)g(lo)r(cal)h(references.)48
b(External)739 722 y(co)r(de)36 b(has)g(to)g(man)n(ually)f(manage)h(Sc)
n(heme)g(ob)5 b(jects)36 b(that)g(outliv)n(e)g(a)g(function)h(call)f
(as)739 822 y(global)26 b(references.)37 b(Sc)n(heme)27
b(ob)5 b(jects)28 b(outliv)n(e)f(a)g(function)i(call)e(if)h(they)g(are)
f(assigned)f(to)739 922 y(a)k(global)f(v)-5 b(ariable)29
b(of)h(the)h(external)f(co)r(de)g(or)f(stored)h(in)g(long-living)f
(external)h(ob)5 b(jects,)739 1021 y(see)27 b(section)p
0 0 1 TeXcolorrgb 27 w(8.7.1)p Black(.)863 1157 y(A)41
b(lo)r(cal)e(reference)g(is)h(v)-5 b(alid)40 b(only)g(within)h(the)f
(dynamic)g(con)n(text)f(of)h(the)h(nativ)n(e)739 1257
y(metho)r(d)27 b(that)g(creates)f(it.)37 b(Therefore,)26
b(a)g(lo)r(cal)g(reference)g(b)r(eha)n(v)n(es)g(exactly)g(lik)n(e)g(a)h
(lo)r(cal)739 1356 y(v)-5 b(ariable)31 b(in)h(the)h(external)e(co)r
(de:)45 b(It)33 b(is)f(liv)n(e)f(as)h(long)f(as)g(external)g(co)r(de)h
(can)g(access)f(it.)739 1456 y(T)-7 b(o)27 b(ac)n(hiev)n(e)f(this,)h
(ev)n(ery)f(external)g(function)i(in)g(the)f(in)n(terface)g(that)g
(accepts)g(or)f(returns)739 1556 y(reference)f(ob)5 b(jects)25
b(tak)n(es)g(a)h Fq(c)l(al)t(l)j(obje)l(ct)35 b Fr(of)26
b(t)n(yp)r(e)g Fo(s48)p 2453 1556 27 4 v 30 w(call)p
2659 1556 V 30 w(t)f Fr(as)h(its)g(\014rst)g(argumen)n(t.)35
b(A)739 1655 y(call)c(ob)5 b(ject)31 b(corresp)r(onds)e(to)i(a)g
(particular)f(call)g(from)h(Sc)n(heme)g(to)g(C.)g(The)h(call)e(ob)5
b(ject)739 1755 y(holds)40 b(all)g(the)h(references)e(that)i(b)r(elong)
e(to)i(a)f(call)g(\(lik)n(e)g(the)h(call's)e(argumen)n(ts)g(and)739
1854 y(return)34 b(v)-5 b(alue\))34 b(to)g(external)g(co)r(de)g(from)g
(Sc)n(heme.)57 b(External)33 b(co)r(de)h(ma)n(y)f(pass)h(a)g(lo)r(cal)
739 1954 y(reference)i(through)h(m)n(ultiple)g(external)g(functions.)65
b(The)38 b(foreign-function)e(in)n(terface)739 2054 y(automatically)d
(frees)h(all)h(the)g(lo)r(cal)f(references)f(a)h(call)h(ob)5
b(ject)34 b(o)n(wns,)h(along)f(with)h(the)739 2153 y(call)27
b(ob)5 b(ject)27 b(itself,)i(when)e(an)h(external)f(call)g(returns)g
(to)g(Sc)n(heme.)863 2289 y(This)f(means)g(that)g(in)g(the)g(common)g
(case)f(of)h(Sc)n(heme)g(calling)f(an)h(external)f(function)739
2389 y(that)e(do)r(es)g(some)f(w)n(ork)f(on)i(its)g(argumen)n(ts)e(and)
i(returns)f(without)h(stashing)f(an)n(y)g(Sc)n(heme)739
2488 y(ob)5 b(jects)26 b(in)g(global)g(v)-5 b(ariables)25
b(or)g(global)g(data)h(structures,)g(the)h(external)e(co)r(de)h(do)r
(es)g(not)739 2588 y(need)34 b(to)f(do)h(an)n(y)f(b)r(o)r(okk)n
(eeping,)h(since)f(all)g(the)i(reference)d(ob)5 b(jects)33
b(the)i(external)d(co)r(de)739 2688 y(accum)n(ulates)37
b(are)g(lo)r(cal)g(references.)66 b(Once)37 b(the)i(call)e(returns,)j
(the)e(foreign-function)739 2787 y(in)n(terface)27 b(frees)g(all)g(the)
h(lo)r(cal)f(references.)863 2923 y(F)-7 b(or)34 b(example,)h(the)g
(functions)f(to)g(construct)g(and)g(access)f(pairs)g(are)g(declared)h
(lik)n(e)739 3023 y(this:)p Black 755 3281 a Fn(\017)p
Black 42 w Fo(s48)p 976 3281 V 30 w(ref)p 1138 3281 V
30 w(t)41 b(s48)p 1385 3281 V 30 w(cons)p 1591 3281 V
30 w(2\(s48)p 1841 3281 V 29 w(call)p 2046 3281 V 30
w(t)g(call,)e(s48)p 2552 3281 V 30 w(ref)p 2714 3281
V 31 w(t)i(car,)f(s48)p 3178 3281 V 30 w(ref)p 3340 3281
V 30 w(t)h(cdr\);)p Black 755 3381 a Fn(\017)p Black
42 w Fo(s48)p 976 3381 V 30 w(ref)p 1138 3381 V 30 w(t)g(s48)p
1385 3381 V 30 w(car)p 1547 3381 V 30 w(2\(s48)p 1797
3381 V 29 w(call)p 2002 3381 V 30 w(t)g(call,)f(s48)p
2509 3381 V 30 w(ref)p 2671 3381 V 30 w(t)h(pair\);)p
Black 755 3480 a Fn(\017)p Black 42 w Fo(s48)p 976 3480
V 30 w(ref)p 1138 3480 V 30 w(t)g(s48)p 1385 3480 V 30
w(cdr)p 1547 3480 V 30 w(2\(s48)p 1797 3480 V 29 w(call)p
2002 3480 V 30 w(t)g(call,)f(s48)p 2509 3480 V 30 w(ref)p
2671 3480 V 30 w(t)h(pair\);)863 3738 y Fr(This)23 b(foreign-function)e
(in)n(terface)g(tak)n(es)h(a)f(signi\014can)n(t)h(burden)g(o\013)g(the)
h(programmer)739 3838 y(as)31 b(it)g(handles)g(most)g(common)g(cases)g
(automatically)-7 b(.)47 b(If)31 b(all)g(the)h(Sc)n(heme)f(ob)5
b(jects)31 b(are)739 3938 y(liv)n(e)g(for)g(the)h(exten)n(t)g(of)f(the)
h(curren)n(t)f(external)g(call,)h(the)g(programmer)e(do)r(es)h(not)g
(ha)n(v)n(e)739 4037 y(to)c(do)g(an)n(ything)g(at)g(all.)37
b(Since)27 b(the)h(lifetime)g(of)f(the)h(Sc)n(heme)f(ob)5
b(jects)27 b(is)h(then)f(iden)n(tical)739 4137 y(with)33
b(the)g(lifetime)g(of)g(the)g(according)d(reference)i(ob)5
b(jects.)51 b(In)33 b(this)g(case,)g(the)g(systems)739
4236 y(automatically)g(manages)g(b)r(oth)i(for)e(the)i(programmer.)54
b(Using)34 b(this)h(foreign-function)739 4336 y(in)n(terface)e(do)r(es)
g(not)h(mak)n(e)f(the)h(co)r(de)g(more)f(complex;)j(the)e(co)r(de)g
(sta)n(ys)e(compact)h(and)739 4436 y(readable.)i(The)27
b(programmer)d(has)i(to)h(get)f(accustomed)g(to)g(passing)g(the)h(call)
f(argumen)n(t)739 4535 y(around.)863 4671 y(Ho)n(w)i(to)g(manage)f(Sc)n
(heme)h(ob)5 b(jects)28 b(that)g(outliv)n(e)g(the)h(curren)n(t)e(call)h
(is)g(describ)r(ed)g(in)739 4771 y(section)p 0 0 1 TeXcolorrgb
27 w(8.7.1)p Black(.)863 4907 y(Section)p 0 0 1 TeXcolorrgb
19 w(8.12)p Black 17 w(giv)n(es)17 b(a)h(recip)r(e)g(ho)n(w)g(to)g(con)
n(v)n(ert)f(external)h(co)r(de)g(from)g(the)h(old)f(GCPR)n(OTECT-)739
5006 y(st)n(yle)27 b(in)n(terface)g(to)g(the)h(new)g(JNI-st)n(yle)f(in)
n(terface.)p Black 2109 5255 a(106)p Black eop end
%%Page: 107 115
TeXDict begin 107 114 bop 0 TeXcolorgray Black Black
Black 291 523 a Fj(8.2)135 b(Shared)45 b(bindings)291
705 y Fr(Shared)c(bindings)h(are)e(the)j(means)e(b)n(y)g(whic)n(h)h
(named)g(v)-5 b(alues)41 b(are)g(shared)g(b)r(et)n(w)n(een)291
805 y(Sc)n(heme)35 b(co)r(de)h(and)f(C)h(co)r(de.)61
b(There)35 b(are)f(t)n(w)n(o)h(separate)f(tables)i(of)f(shared)g
(bindings,)291 904 y(one)28 b(for)g(v)-5 b(alues)28 b(de\014ned)i(in)e
(Sc)n(heme)h(and)g(accessed)e(from)i(C)f(and)h(the)g(other)f(for)g(v)-5
b(alues)291 1004 y(going)30 b(the)i(other)e(w)n(a)n(y)-7
b(.)48 b(Shared)30 b(bindings)i(actually)e(bind)i(names)f(to)h(cells,)g
(to)f(allo)n(w)f(a)291 1103 y(name)d(to)h(b)r(e)g(lo)r(ok)n(ed)f(up)h
(b)r(efore)f(it)h(has)g(b)r(een)g(assigned.)36 b(This)28
b(is)g(necessary)e(b)r(ecause)h(C)291 1203 y(initialization)j(co)r(de)h
(ma)n(y)f(b)r(e)h(run)g(b)r(efore)f(or)g(after)g(the)i(corresp)r
(onding)c(Sc)n(heme)j(co)r(de,)291 1303 y(dep)r(ending)25
b(on)f(whether)h(the)g(Sc)n(heme)g(co)r(de)g(is)f(in)h(the)h(resumed)e
(image)g(or)g(is)h(run)f(in)i(the)291 1402 y(curren)n(t)g(session.)291
1634 y Fe(8.2.1)112 b(Exp)s(orting)37 b(Sc)m(heme)i(v)-6
b(alues)38 b(to)f(C)p Black 307 1787 a Fn(\017)p Black
41 w Fo(\(define-exported-)o(bi)o(ndi)o(ng)e Fq(name)41
b(value)6 b Fo(\))42 b Fn(!)g Fq(shar)l(e)l(d-binding)p
Black 307 1931 a Fn(\017)p Black 41 w Fo(s48)p 527 1931
27 4 v 30 w(ref)p 689 1931 V 30 w(t)g(s48)p 937 1931
V 30 w(get)p 1099 1931 V 30 w(imported)p 1481 1931 V
28 w(binding)p 1817 1931 V 28 w(2\(char)d(*name\))p Black
307 2030 a Fn(\017)p Black 41 w Fo(s48)p 527 2030 V 30
w(ref)p 689 2030 V 30 w(t)j(s48)p 937 2030 V 30 w(get)p
1099 2030 V 30 w(imported)p 1481 2030 V 28 w(binding)p
1817 2030 V 28 w(local)p 2065 2030 V 30 w(2\(s48)p 2315
2030 V 29 w(call)p 2520 2030 V 30 w(t)f(call,)e(char)h(*name\))p
Black 307 2130 a Fn(\017)p Black 41 w Fo(s48)p 527 2130
V 30 w(ref)p 689 2130 V 30 w(t)i(s48)p 937 2130 V 30
w(shared)p 1231 2130 V 29 w(binding)p 1568 2130 V 28
w(ref)p 1728 2130 V 30 w(2\(s48)p 1978 2130 V 30 w(call)p
2184 2130 V 29 w(t)f(call,)f(s48)p 2690 2130 V 30 w(ref)p
2852 2130 V 30 w(t)h(shared)p 3231 2130 V 29 w(binding\))291
2274 y(Define-exported)o(-bi)o(nd)o(in)o(g)16 b Fr(mak)n(es)k
Fq(value)29 b Fr(a)n(v)-5 b(ailable)20 b(to)h(C)h(co)r(de)f(under)h
Fq(name)6 b Fr(,)23 b(whic)n(h)291 2374 y(m)n(ust)32
b(b)r(e)g(a)f Fq(string)7 b Fr(,)33 b(creating)e(a)h(new)f(shared)g
(binding)h(if)h(necessary)-7 b(.)48 b(The)31 b(C)h(function)291
2473 y Fo(s48)p 428 2473 V 30 w(get)p 590 2473 V 30 w(imported)p
972 2473 V 28 w(binding)p 1308 2473 V 28 w(2)f Fr(returns)e(a)h(global)
g(reference)f(to)h(the)h(shared)f(binding)291 2573 y(de\014ned)18
b(for)g Fo(name)p Fr(,)h(again)e(creating)g(it)i(if)g(necessary)-7
b(,)19 b Fo(s48)p 2079 2573 V 30 w(get)p 2241 2573 V
30 w(imported)p 2623 2573 V 28 w(binding)p 2959 2573
V 28 w(local)p 3207 2573 V 30 w(2)291 2673 y Fr(returns)f(a)h(lo)r(cal)
g(reference)g(to)g(the)h(shared)e(binding)i(\(see)f(section)p
0 0 1 TeXcolorrgb 19 w(8.1.3)p Black 18 w(for)g(details)g(on)g(ref-)291
2772 y(erence)i(ob)5 b(jects\).)35 b(The)22 b(C)g(macro)f
Fo(s48)p 1514 2772 V 30 w(shared)p 1808 2772 V 29 w(binding)p
2145 2772 V 28 w(ref)p 2305 2772 V 31 w(2)g Fr(dereferences)g(a)h
(shared)291 2872 y(binding,)27 b(returning)g(its)h(curren)n(t)f(v)-5
b(alue.)291 3103 y Fe(8.2.2)112 b(Exp)s(orting)37 b(C)h(v)-6
b(alues)38 b(to)f(Sc)m(heme)291 3256 y Fr(Since)29 b(shared)f(bindings)
h(are)f(de\014ned)i(during)e(initialization,)h(i.e.)42
b(outside)29 b(an)g(external)291 3356 y(call,)g(there)h(is)f(no)h(call)
f(ob)5 b(ject.)42 b(Therefore,)29 b(exp)r(orting)g(shared)g(bindings)g
(from)h(C)f(do)r(es)291 3456 y(not)e(use)h(the)g(new)f
(foreign-function)g(in)n(terfaces)g(sp)r(eci\014cations.)p
Black 307 3600 a Fn(\017)p Black 41 w Fo(void)40 b(s48)p
743 3600 V 30 w(define)p 1037 3600 V 29 w(exported)p
1418 3600 V 28 w(binding\(char)d(*name,)i(s48)p 2446
3600 V 30 w(value)g(v\))p Black 307 3744 a Fn(\017)p
Black 41 w Fo(\(lookup-imported-)o(bi)o(ndi)o(ng)c Fq(string)7
b Fo(\))41 b Fn(!)h Fq(shar)l(e)l(d-binding)p Black 307
3843 a Fn(\017)p Black 41 w Fo(\(shared-binding-r)o(ef)35
b Fq(shar)l(e)l(d-binding)7 b Fo(\))43 b Fn(!)f Fq(value)291
3987 y Fr(These)f(are)g(used)h(to)g(de\014ne)g(shared)f(bindings)g
(from)h(C)g(and)f(to)h(access)f(them)h(from)291 4087
y(Sc)n(heme.)35 b(Again,)24 b(if)g(a)f(name)g(is)g(lo)r(ok)n(ed)f(up)i
(b)r(efore)f(it)h(has)f(b)r(een)h(de\014ned,)g(a)f(new)h(binding)291
4187 y(is)j(created)g(for)g(it.)415 4286 y(The)32 b(common)g(case)f(of)
h(exp)r(orting)g(a)f(C)h(function)h(to)f(Sc)n(heme)g(can)g(b)r(e)g
(done)g(using)291 4386 y(the)c(macro)e Fo(s48)p 820 4386
V 30 w(export)p 1114 4386 V 29 w(function\()p Fq(name)6
b Fo(\))p Fr(.)33 b(This)28 b(expands)f(in)n(to)p Black
Black 291 4547 a Fo(s48)p 428 4547 V 30 w(define)p 722
4547 V 29 w(exported)p 1103 4547 V 28 w(binding\(")p
Fq(name)6 b Fo(",)1642 4646 y(s48)p 1779 4646 V 30 w(enter)p
2029 4646 V 29 w(pointer\()p Fq(name)g Fo(\)\))291 4807
y Fr(whic)n(h)32 b(b)r(o)n(xes)f(the)i(function)g(p)r(oin)n(ter)f(in)n
(to)g(a)f(Sc)n(heme)i(b)n(yte)f(v)n(ector)f(and)h(then)h(exp)r(orts)291
4907 y(it.)i(Note)24 b(that)f Fo(s48)p 913 4907 V 31
w(enter)p 1164 4907 V 29 w(pointer)d Fr(allo)r(cates)j(space)f(in)i
(the)g(Sc)n(heme)f(heap)g(and)g(migh)n(t)291 5006 y(trigger)j(a)h
(garbage)e(collection;)i(see)g(Section)p 0 0 1 TeXcolorrgb
28 w(8.7)p Black(.)p Black 1660 5255 a(107)p Black eop
end
%%Page: 108 116
TeXDict begin 108 115 bop 0 TeXcolorgray Black Black
Black Black 755 523 a Fn(\017)p Black 42 w Fo(\(import-definit)o(io)o
(n)36 b Fq(name)6 b Fo(\))1455 b Fr(syn)n(tax)p Black
755 623 a Fn(\017)p Black 42 w Fo(\(import-definit)o(io)o(n)36
b Fq(name)41 b(c-name)6 b Fo(\))1151 b Fr(syn)n(tax)739
777 y(These)31 b(macros)g(simplify)h(imp)r(orting)g(de\014nitions)f
(from)h(C)g(to)f(Sc)n(heme.)50 b(They)32 b(expand)739
876 y(in)n(to)863 977 y Fo(\(define)41 b Fq(name)50 b
Fo(\(lookup-imported-)o(bi)o(nd)o(ing)37 b Fq(c-name)6
b Fo(\)\))739 1078 y Fr(where)29 b Fq(c-name)36 b Fr(is)30
b(as)f(supplied)h(for)f(the)i(second)e(form.)43 b(F)-7
b(or)29 b(the)h(\014rst)g(form)f Fq(c-name)36 b Fr(is)739
1178 y(deriv)n(ed)25 b(from)h Fq(name)33 b Fr(b)n(y)26
b(replacing)f(`)p Fo(-)p Fr(')h(with)h(`)p 2251 1178
27 4 v 31 w(')g(and)f(con)n(v)n(erting)e(letters)j(to)f(lo)n(w)n
(ercase.)739 1278 y(F)-7 b(or)27 b(example,)g Fo(\(import-definiti)o
(on)37 b(my-foo\))25 b Fr(expands)i(in)n(to)863 1379
y Fo(\(define)41 b(my-foo)g(\(lookup-imported-)o(bi)o(ndi)o(ng)c("my)p
2744 1379 V 30 w(foo"\)\))739 1619 y Fe(8.2.3)112 b(Complete)38
b(shared)h(binding)g(in)m(terface)739 1775 y Fr(There)24
b(are)f(a)i(n)n(um)n(b)r(er)f(of)g(other)g(Sc)n(heme)h(functions)g
(related)f(to)g(shared)g(bindings;)h(these)739 1875 y(are)h(in)i(the)g
(structure)f Fo(shared-bindings)p Fr(.)p Black 755 2029
a Fn(\017)p Black 42 w Fo(\(shared-binding)o(?)44 b Fq(x)10
b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 755 2128
a Fn(\017)p Black 42 w Fo(\(shared-binding)o(-n)o(ame)35
b Fq(shar)l(e)l(d-binding)7 b Fo(\))43 b Fn(!)e Fq(string)p
Black 755 2228 a Fn(\017)p Black 42 w Fo(\(shared-binding)o(-i)o(s-i)o
(mp)o(ort)o(?)j Fq(shar)l(e)l(d-binding)7 b Fo(\))43
b Fn(!)e Fq(b)l(o)l(ole)l(an)p Black 755 2328 a Fn(\017)p
Black 42 w Fo(\(shared-binding)o(-s)o(et!)35 b Fq(shar)l(e)l(d-binding)
43 b(value)6 b Fo(\))p Black 755 2427 a Fn(\017)p Black
42 w Fo(\(define-importe)o(d-)o(bin)o(di)o(ng)35 b Fq(string)41
b(value)6 b Fo(\))p Black 755 2527 a Fn(\017)p Black
42 w Fo(\(lookup-exporte)o(d-)o(bin)o(di)o(ng)35 b Fq(string)7
b Fo(\))p Black 755 2627 a Fn(\017)p Black 42 w Fo(\(undefine-impor)o
(te)o(d-b)o(in)o(din)o(g)35 b Fq(string)7 b Fo(\))p Black
755 2726 a Fn(\017)p Black 42 w Fo(\(undefine-expor)o(te)o(d-b)o(in)o
(din)o(g)35 b Fq(string)7 b Fo(\))739 2880 y(Shared-binding?)32
b Fr(is)27 b(the)i(predicate)e(for)h(shared-bindings.)36
b Fo(Shared-binding-n)o(ame)739 2980 y Fr(returns)19
b(the)h(name)f(of)h(a)f(binding.)35 b Fo(Shared-binding-i)o(s-)o(im)o
(por)o(t?)28 b Fr(is)19 b(true)h(if)g(the)g(bind-)739
3079 y(ing)26 b(w)n(as)f(de\014ned)h(from)g(C.)g Fo(Shared-binding-se)o
(t!)k Fr(c)n(hanges)25 b(the)h(v)-5 b(alue)26 b(of)g(a)g(binding.)739
3179 y Fo(Define-imported-)o(bi)o(ndi)o(ng)35 b Fr(and)41
b Fo(lookup-exported)o(-bi)o(nd)o(ing)34 b Fr(are)40
b(Sc)n(heme)i(v)n(er-)739 3279 y(sions)h(of)51 b Fo(s48)p
1214 3279 V 30 w(define)p 1508 3279 V 29 w(exported)p
1889 3279 V 28 w(binding)42 b Fr(and)i Fo(s48)p 2577
3279 V 30 w(lookup)p 2871 3279 V 29 w(imported)p 3252
3279 V 28 w(binding)p Fr(.)739 3378 y(The)38 b(t)n(w)n(o)f
Fo(undefine-)e Fr(pro)r(cedures)i(remo)n(v)n(e)f(bindings)i(from)g(the)
h(t)n(w)n(o)e(tables.)68 b(They)739 3478 y(do)27 b(nothing)h(if)g(the)g
(name)f(is)h(not)f(found)h(in)g(the)g(table.)863 3579
y(The)g(follo)n(wing)f(C)g(macros)f(corresp)r(ond)g(to)i(the)g(Sc)n
(heme)f(functions)h(ab)r(o)n(v)n(e.)p Black 755 3733
a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 3733 V
30 w(shared)p 1691 3733 V 29 w(binding)p 2028 3733 V
28 w(p\(s48)p 2276 3733 V 30 w(call)p 2482 3733 V 29
w(t)42 b(call,)d(x\))p Black 755 3833 a Fn(\017)p Black
42 w Fo(int)289 b(s48)p 1397 3833 V 30 w(shared)p 1691
3833 V 29 w(binding)p 2028 3833 V 28 w(is)p 2144 3833
V 31 w(import)p 2439 3833 V 29 w(p\(s48)p 2688 3833 V
29 w(call)p 2893 3833 V 30 w(t)41 b(call,)e(s48)p 3399
3833 V 31 w(ref)p 3562 3833 V 30 w(t)i(s)p 3721 3833
V 31 w(b\))p Black 755 3932 a Fn(\017)p Black 42 w Fo(s48)p
976 3932 V 30 w(ref)p 1138 3932 V 30 w(t)g(s48)p 1385
3932 V 30 w(shared)p 1679 3932 V 29 w(binding)p 2016
3932 V 28 w(name\(s48)p 2396 3932 V 28 w(call)p 2600
3932 V 30 w(t)g(call,)f(s48)p 3107 3932 V 30 w(ref)p
3269 3932 V 30 w(t)h(s)p 3428 3932 V 31 w(b\))p Black
755 4032 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
4032 V 30 w(shared)p 1693 4032 V 29 w(binding)p 2030
4032 V 28 w(set\(s48)p 2366 4032 V 29 w(call)p 2571 4032
V 30 w(t)41 b(call,)e(s48)p 3077 4032 V 30 w(ref)p 3239
4032 V 30 w(t)j(s)p 3399 4032 V 31 w(b,)e(s48)p 3690
4032 V 30 w(ref)p 3852 4032 V 31 w(t)h(v\))739 4314 y
Fj(8.3)135 b(Calling)47 b(C)e(functions)f(from)i(Sc)l(heme)739
4499 y Fr(There)34 b(are)f(di\013eren)n(t)h(w)n(a)n(ys)f(to)h(call)g(C)
g(functions)h(from)e(Sc)n(heme,)j(dep)r(ending)f(on)f(ho)n(w)739
4599 y(the)28 b(C)g(function)g(w)n(as)e(obtained.)p Black
755 4753 a Fn(\017)p Black 42 w Fo(\(call-imported-)o(bi)o(ndi)o(ng)o
(-2)35 b Fq(binding)43 b(ar)l(g)2342 4765 y Fk(0)2421
4753 y Fq(.)13 b(.)g(.)g Fo(\))51 b Fn(!)41 b Fq(value)739
4907 y Fr(Eac)n(h)19 b(of)h(these)g(applies)f(its)h(\014rst)g(argumen)n
(t,)h(a)e(C)h(function)h(that)f(accepts)g(and/or)e(returns)739
5006 y(ob)5 b(jects)25 b(of)h(t)n(yp)r(e)f Fo(s48)p 1435
5006 V 31 w(ref)p 1598 5006 V 30 w(t)g Fr(and)g(has)h(its)f(\014rst)h
(argumen)n(t)e(of)i(t)n(yp)r(e)g Fo(s48)p 3065 5006 V
30 w(call)p 3271 5006 V 30 w(t)p Fr(,)f(to)h(the)p Black
2109 5255 a(108)p Black eop end
%%Page: 109 117
TeXDict begin 109 116 bop 0 TeXcolorgray Black Black
Black 291 523 a Fr(rest)30 b(of)i(the)f(argumen)n(ts.)47
b(F)-7 b(or)31 b Fo(call-imported-b)o(ind)o(in)o(g-2)24
b Fr(the)32 b(function)g(argumen)n(t)291 623 y(m)n(ust)27
b(b)r(e)h(an)g(imp)r(orted)f(binding.)415 727 y(F)-7
b(or)37 b(all)h(of)g(these,)i(the)f(in)n(terface)e(passes)f(the)j
(curren)n(t)e(call)g(ob)5 b(ject)38 b(and)g(the)g Fq(ar)l(g)3127
739 y Fa(i)291 827 y Fr(v)-5 b(alues)21 b(to)h(the)g(C)g(function)g
(and)g(the)g(v)-5 b(alue)22 b(returned)f(is)h(that)g(returned)f(b)n(y)h
(C)g(pro)r(cedure.)291 927 y(No)32 b(automatic)f(represen)n(tation)g
(con)n(v)n(ersion)f(o)r(ccurs)h(for)h(either)g(argumen)n(ts)f(or)g
(return)291 1026 y(v)-5 b(alues.)47 b(Up)32 b(to)f(t)n(w)n(elv)n(e)f
(argumen)n(ts)g(ma)n(y)h(b)r(e)h(passed.)47 b(There)31
b(is)g(no)g(metho)r(d)h(supplied)291 1126 y(for)25 b(returning)h(m)n
(ultiple)h(v)-5 b(alues)25 b(to)h(Sc)n(heme)h(from)e(C)i(\(or)e(vice)h
(v)n(ersa\))f(\(mainly)h(b)r(ecause)291 1225 y(C)h(do)r(es)g(not)h(ha)n
(v)n(e)e(m)n(ultiple)j(return)e(v)-5 b(alues\).)415 1330
y(Keyb)r(oard)34 b(in)n(terrupts)h(that)g(o)r(ccur)g(during)g(a)g(call)
g(to)g(a)g(C)g(function)h(are)e(ignored)291 1430 y(un)n(til)28
b(the)h(function)g(returns)e(to)h(Sc)n(heme)h(\(this)f(is)g(clearly)g
(a)f(problem;)i(w)n(e)e(are)h(w)n(orking)291 1529 y(on)f(a)g
(solution\).)p Black 307 1694 a Fn(\017)p Black 41 w
Fo(\(import-lambda-de)o(fi)o(nit)o(io)o(n-)o(2)36 b Fq(name)47
b Fo(\()p Fq(formal)52 b Fo(...\)\))517 b Fr(syn)n(tax)p
Black 307 1793 a Fn(\017)p Black 41 w Fo(\(import-lambda-de)o(fi)o(nit)
o(io)o(n-)o(2)36 b Fq(name)47 b Fo(\()p Fq(formal)52
b Fo(...\))39 b Fq(c-name)6 b Fo(\))209 b Fr(syn)n(tax)291
1958 y(These)27 b(macros)e(simplify)j(imp)r(orting)f(functions)h(from)f
(C)g(that)h(follo)n(w)e(the)i(return)f(v)-5 b(alue)291
2057 y(and)26 b(argumen)n(t)g(con)n(v)n(en)n(tions)f(of)i(the)g
(foreign-function)f(in)n(terface)g(and)h(use)f Fo(s48)p
2880 2057 27 4 v 31 w(call)p 3087 2057 V 29 w(t)291 2157
y Fr(and)j Fo(s48)p 591 2157 V 30 w(ref)p 753 2157 V
30 w(t)g Fr(as)g(their)h(argumen)n(t)e(and)h(return)g(t)n(yp)r(es.)43
b(They)29 b(de\014ne)h Fq(name)36 b Fr(to)29 b(b)r(e)h(a)291
2256 y(function)c(with)g(the)g(giv)n(en)f(formals)f(that)i(applies)f
(those)h(formals)e(to)i(the)g(corresp)r(onding)291 2356
y(C)h(binding.)37 b Fq(C-name)6 b Fr(,)29 b(if)f(supplied,)g(should)f
(b)r(e)h(a)f(string.)36 b(These)28 b(expand)f(in)n(to)p
Black Black 291 2563 a Fo(\(define)40 b(temp)i(\(lookup-imported-)o(bi)
o(ndi)o(ng)37 b Fq(c-name)6 b Fo(\)\))291 2663 y(\(define)40
b Fq(name)378 2763 y Fo(\(lambda)g(\()p Fq(formal)54
b Fo(...\))465 2862 y(\(call-imported-b)o(in)o(din)o(g-)o(2)38
b(temp)k Fq(formal)53 b Fo(...\)\)\))320 3065 y Fr(If)36
b Fq(c-name)f Fr(is)29 b(not)g(supplied,)h(it)g(is)f(deriv)n(ed)f(from)
h Fq(name)35 b Fr(b)n(y)29 b(con)n(v)n(erting)e(all)i(letters)g(to)291
3165 y(lo)n(w)n(ercase)c(and)i(replacing)f(`)p Fo(-)p
Fr(')i(with)g(`)p 1507 3165 V 31 w('.)291 3465 y Fj(8.4)135
b(Dynamic)45 b(loading)291 3656 y Fr(External)18 b(co)r(de)h(can)g(b)r
(e)h(loaded)e(in)n(to)h(a)g(running)g(Sc)n(heme)h(48|at)e(least)h(on)g
(most)g(v)-5 b(arian)n(ts)291 3756 y(of)30 b(Unix)h(and)f(on)g(Windo)n
(ws.)45 b(The)30 b(required)g(Sc)n(heme)g(functions)h(are)e(in)i(the)f
(structure)291 3856 y Fo(load-dynamic-ex)o(ter)o(na)o(ls)o
Fr(.)415 3960 y(T)-7 b(o)40 b(b)r(e)g(suitable)g(for)g(dynamic)f
(loading,)j(the)f(externals)e(co)r(de)h(m)n(ust)g(reside)f(in)h(a)291
4060 y(shared)26 b(ob)5 b(ject.)37 b(The)27 b(shared)g(ob)5
b(ject)27 b(m)n(ust)h(de\014ne)g(a)f(function:)p Black
307 4241 a Fn(\017)p Black 41 w Fo(void)40 b(s48)p 743
4241 V 30 w(on)p 861 4241 V 31 w(load\(void\))291 4422
y Fr(The)29 b Fo(s48)p 600 4422 V 30 w(on)p 718 4422
V 31 w(load)f Fr(is)h(run)g(up)r(on)h(loading)f(the)h(shared)e(ob)5
b(jects.)42 b(It)30 b(t)n(ypically)f(con)n(tains)291
4521 y(in)n(v)n(o)r(cations)g(of)38 b Fo(S48)p 970 4521
V 30 w(EXPORT)p 1264 4521 V 29 w(FUNCTION)28 b Fr(to)j(mak)n(e)g(the)h
(functionalit)n(y)f(de\014ned)h(b)n(y)f(the)291 4621
y(shared)26 b(ob)5 b(ject)28 b(kno)n(wn)e(to)i(Sc)n(heme)f(48.)415
4726 y(The)g(shared)f(ob)5 b(ject)27 b(ma)n(y)f(also)g(de\014ne)i
(either)f(or)f(b)r(oth)h(of)g(the)h(follo)n(wing)e(functions:)p
Black 307 4907 a Fn(\017)p Black 41 w Fo(void)40 b(s48)p
743 4907 V 30 w(on)p 861 4907 V 31 w(unload\(void\))p
Black 307 5006 a Fn(\017)p Black 41 w Fo(void)g(s48)p
743 5006 V 30 w(on)p 861 5006 V 31 w(reload\(void\))p
Black 1660 5255 a Fr(109)p Black eop end
%%Page: 110 118
TeXDict begin 110 117 bop 0 TeXcolorgray Black Black
Black 739 523 a Fr(Sc)n(heme)39 b(48)g(calls)g Fo(s48)p
1505 523 27 4 v 30 w(on)p 1623 523 V 30 w(unload)e Fr(just)j(b)r(efore)
g(it)g(unloads)e(the)i(shared)f(ob)5 b(ject.)72 b(If)739
623 y Fo(s48)p 876 623 V 30 w(on)p 994 623 V 31 w(reload)21
b Fr(is)j(presen)n(t,)g(Sc)n(heme)g(48)f(calls)g(it)h(when)h(it)f
(loads)f(the)h(shared)f(ob)5 b(ject)24 b(for)739 722
y(the)33 b(second)e(time,)j(or)e(some)f(new)i(v)n(ersion)d(thereof.)51
b(If)33 b(it)g(is)f(not)g(presen)n(t,)h(Sc)n(heme)f(48)739
822 y(calls)27 b Fo(s48)p 1061 822 V 30 w(on)p 1179 822
V 31 w(load)f Fr(instead.)36 b(\(More)27 b(on)h(that)f(later.\))863
922 y(F)-7 b(or)33 b(Lin)n(ux,)i(the)e(follo)n(wing)g(commands)f
(compile)h Fo(foo.c)f Fr(in)n(to)h(a)g(\014le)g Fo(foo.so)e
Fr(that)739 1021 y(can)c(b)r(e)h(loaded)f(dynamically)-7
b(.)p Black Black 739 1189 a Fo(\045)43 b(gcc)f(-c)h(-o)g(foo.o)e
(foo.c)739 1288 y(\045)i(ld)g(-shared)e(-o)h(foo.so)f(foo.o)739
1455 y Fr(The)27 b(follo)n(wing)f(pro)r(cedures)g(pro)n(vide)g(the)h
(basic)g(functionalit)n(y)g(for)g(loading)f(shared)g(ob-)739
1555 y(jects)i(con)n(taining)e(dynamic)i(externals:)p
Black 755 1721 a Fn(\017)p Black 42 w Fo(\(load-dynamic-e)o(xt)o(ern)o
(al)o(s)36 b Fq(string)41 b(plete?)51 b(rr)l(ep)l(e)l(at?)f(rr)l
(esume?)10 b Fo(\))51 b Fn(!)41 b Fq(dynamic-externals)p
Black 755 1821 a Fn(\017)p Black 42 w Fo(\(unload-dynamic)o(-e)o(xte)o
(rn)o(als)35 b Fq(string)7 b Fo(\))41 b Fn(!)83 b Fq(dynamic-externals)
p Black 755 1921 a Fn(\017)p Black 42 w Fo(\(reload-dynamic)o(-e)o(xte)
o(rn)o(als)35 b Fq(dynamic-externals)7 b Fo(\))739 2087
y(Load-dynamic-ext)o(er)o(nal)o(s)26 b Fr(loads)32 b(the)g(named)h
(shared)e(ob)5 b(jects.)51 b(The)32 b Fq(plete?)63 b
Fr(argu-)739 2187 y(men)n(t)33 b(determines)g(whether)g(Sc)n(heme)g(48)
f(app)r(ends)h(the)g(OS-sp)r(eci\014c)g(su\016x)g(\(t)n(ypically)739
2287 y Fo(.so)h Fr(for)g(Unix,)k(and)d Fo(.dll)e Fr(for)i(Windo)n(ws\))
g(to)g(the)g(name.)59 b(The)35 b Fq(rr)l(ep)l(e)l(at?)70
b Fr(argumen)n(t)739 2386 y(determines)40 b(ho)n(w)h
Fo(load-dynamic-ex)o(ter)o(na)o(ls)34 b Fr(b)r(eha)n(v)n(es)39
b(if)h(it)h(is)f(called)g(again)f(with)739 2486 y(the)34
b(same)f(argumen)n(t:)48 b(If)34 b(this)g(is)g(true,)h(it)f(reloads)e
(the)i(shared)f(ob)5 b(ject)33 b(\(and)h(calls)f(its)739
2586 y Fo(s48)p 876 2586 V 30 w(on)p 994 2586 V 31 w(unload)27
b Fr(on)j(unloading)g(if)h(presen)n(t,)f(and,)h(after)f(reloading,)f
Fo(s48)p 3119 2586 V 30 w(on)p 3237 2586 V 31 w(reload)f
Fr(if)739 2685 y(presen)n(t)36 b(or)g Fo(s48)p 1285 2685
V 30 w(on)p 1403 2685 V 31 w(load)f Fr(if)i(not\),)j(otherwise,)e(it)f
(will)g(not)g(do)g(an)n(ything.)64 b(The)36 b Fq(rr)l(e-)739
2785 y(sume?)49 b Fr(argumen)n(t)27 b(determines)h(if)g(an)g(image)g
(subsequen)n(tly)f(dump)r(ed)j(will)e(try)g(to)g(load)739
2884 y(the)21 b(shared)f(ob)5 b(ject)21 b(again)f(automatically)-7
b(.)33 b(\(The)21 b(shared)f(ob)5 b(jects)21 b(will)g(b)r(e)g(loaded)g
(b)r(efore)739 2984 y(an)n(y)j(record)f(resumers)g(run.\))36
b Fo(Load-dynamic-ex)o(ter)o(na)o(ls)18 b Fr(returns)24
b(a)g(handle)g(iden)n(tify-)739 3084 y(ing)j(the)h(shared)f(ob)5
b(ject)27 b(just)h(loaded.)863 3184 y Fo(Unload-dynamic-ex)o(ter)o(na)o
(ls)22 b Fr(unloads)27 b(the)i(shared)e(ob)5 b(ject)27
b(asso)r(ciated)g(with)i(the)739 3283 y(handle)36 b(passed)f(as)g(its)h
(argumen)n(t,)h(previously)e(calling)g(its)h Fo(s48)p
2864 3283 V 31 w(on)p 2983 3283 V 30 w(unload)e Fr(function)739
3383 y(if)d(presen)n(t.)47 b(Note)31 b(that)h(this)f(in)n(v)-5
b(alidates)30 b(all)h(external)f(bindings)i(asso)r(ciated)d(with)j(the)
739 3482 y(shared)26 b(ob)5 b(ject;)28 b(referring)e(to)h(an)n(y)g(of)h
(them)g(will)g(probably)e(crash)h(the)h(program.)863
3582 y Fo(Reload-dynamic-ex)o(ter)o(na)o(ls)21 b Fr(will)28
b(reload)f(the)h(shared)f(ob)5 b(ject)27 b(named)h(b)n(y)g(its)f(ar-)
739 3682 y(gumen)n(t)c(and)g(call)g(its)g Fo(s48)p 1585
3682 V 30 w(on)p 1703 3682 V 31 w(unload)d Fr(function)k(b)r(efore)f
(unloading,)g(and,)h(after)f(reload-)739 3782 y(ing,)k
Fo(s48)p 1037 3782 V 30 w(on)p 1155 3782 V 31 w(reload)e
Fr(if)j(presen)n(t)f(or)g Fo(s48)p 2074 3782 V 30 w(on)p
2192 3782 V 31 w(load)f Fr(if)i(not.)p Black 755 3932
a Fn(\017)p Black 42 w Fo(\(import-dynamic)o(-e)o(xte)o(rn)o(als)35
b Fq(string)7 b Fo(\))41 b Fn(!)h Fq(dynamic-externals)739
4082 y Fr(This)18 b(pro)r(cedure)g(represen)n(ts)f(the)h(exp)r(ected)h
(most)f(usage)f(for)h(loading)g(dynamic-externals.)739
4182 y(It)28 b(is)f(b)r(est)h(explained)g(b)n(y)f(its)h(de\014nition:)p
Black Black 739 4349 a Fo(\(define)41 b(\(import-dynamic)o(-ex)o(te)o
(rn)o(als)c(name\))826 4448 y(\(load-dynamic-ex)o(ter)o(na)o(ls)g(name)
42 b(#t)h(#f)g(#t\)\))739 4724 y Fj(8.5)135 b(Accessing)45
b(Sc)l(heme)g(data)h(from)f(C)739 4907 y Fr(The)19 b(C)g(header)g
(\014le)g Fo(scheme48.h)c Fr(pro)n(vides)j(access)g(to)h(Sc)n(heme)g
(48)f(data)h(structures.)33 b(The)739 5006 y(t)n(yp)r(e)26
b Fo(s48)p 1061 5006 V 30 w(ref)p 1223 5006 V 31 w(t)f
Fr(is)i(used)f(for)f(reference)h(ob)5 b(jects)25 b(that)i(refer)e(to)i
(Sc)n(heme)f(v)-5 b(alues.)36 b(When)p Black 2109 5255
a(110)p Black eop end
%%Page: 111 119
TeXDict begin 111 118 bop 0 TeXcolorgray Black Black
Black 291 523 a Fr(the)32 b(t)n(yp)r(e)g(of)g(a)g(v)-5
b(alue)32 b(is)g(kno)n(wn,)h(suc)n(h)e(as)h(the)g(in)n(teger)g
(returned)f(b)n(y)i Fo(vector-length)291 623 y Fr(or)28
b(the)i(b)r(o)r(olean)f(returned)g(b)n(y)h Fo(pair?)p
Fr(,)e(the)i(corresp)r(onding)d(C)j(pro)r(cedure)e(returns)h(a)g(C)291
722 y(v)-5 b(alue)23 b(of)g(the)g(appropriate)e(t)n(yp)r(e,)k(and)d
(not)i(a)e Fo(s48)p 1880 722 27 4 v 30 w(ref)p 2042 722
V 30 w(t)p Fr(.)36 b(Predicates)21 b(return)i Fo(1)f
Fr(for)h(true)291 822 y(and)k Fo(0)g Fr(for)g(false.)291
1080 y Fe(8.5.1)112 b(Constan)m(ts)291 1242 y Fr(The)27
b(follo)n(wing)g(macros)f(denote)h(Sc)n(heme)h(constan)n(ts:)p
Black 415 1422 a Fn(\017)p Black 41 w Fo(s48)p 635 1422
V 30 w(false)p 885 1422 V 30 w(2\(s48)p 1135 1422 V 29
w(call)p 1340 1422 V 30 w(t\))e Fr(is)i Fo(#f)p Fr(.)p
Black 415 1607 a Fn(\017)p Black 41 w Fo(s48)p 635 1607
V 30 w(true)p 841 1607 V 30 w(2\(s48)p 1091 1607 V 29
w(call)p 1296 1607 V 30 w(t\))f Fr(is)g Fo(#t)p Fr(.)p
Black 415 1792 a Fn(\017)p Black 41 w Fo(s48)p 635 1792
V 30 w(null)p 841 1792 V 30 w(2\(s48)p 1091 1792 V 29
w(call)p 1296 1792 V 30 w(t\))g Fr(is)g(the)h(empt)n(y)g(list.)p
Black 415 1977 a Fn(\017)p Black 41 w Fo(s48)p 635 1977
V 30 w(unspecific)p 1105 1977 V 28 w(2\(s48)p 1353 1977
V 29 w(call)p 1558 1977 V 30 w(t\))g Fr(is)i(a)e(v)-5
b(alue)30 b(used)f(for)g(functions)h(whic)n(h)f(ha)n(v)n(e)498
2077 y(no)42 b(meaningful)h(return)f(v)-5 b(alue)43 b(\(in)g(Sc)n(heme)
f(48)g(this)h(v)-5 b(alue)42 b(returned)g(b)n(y)h(the)498
2176 y(n)n(ullary)27 b(pro)r(cedure)f Fo(unspecific)e
Fr(in)k(the)g(structure)f Fo(util)p Fr(\).)p Black 415
2361 a Fn(\017)p Black 41 w Fo(s48)p 635 2361 V 30 w(eof)p
797 2361 V 30 w(2\(s48)p 1047 2361 V 30 w(call)p 1253
2361 V 29 w(t\))20 b Fr(is)h(the)g(end-of-\014le)f(ob)5
b(ject)20 b(\(in)h(Sc)n(heme)g(48)f(this)h(v)-5 b(alue)20
b(is)498 2461 y(returned)e(b)n(y)g(the)h(n)n(ullary)e(pro)r(cedure)h
Fo(eof-object)c Fr(in)19 b(the)f(structure)g Fo(i/o-internal)p
Fr(\).)291 2719 y Fe(8.5.2)112 b(Con)m(v)m(erting)38
b(v)-6 b(alues)291 2881 y Fr(The)26 b(follo)n(wing)g(macros)f(and)i
(functions)g(con)n(v)n(ert)e(v)-5 b(alues)27 b(b)r(et)n(w)n(een)g(Sc)n
(heme)f(and)h(C)g(rep-)291 2980 y(resen)n(tations.)42
b(The)30 b(`extract')g(ones)f(con)n(v)n(ert)g(from)g(Sc)n(heme)h(to)g
(C)g(and)g(the)g(`en)n(ter's)g(go)291 3080 y(the)e(other)f(w)n(a)n(y)-7
b(.)p Black 307 3244 a Fn(\017)p Black 41 w Fo(int)290
b(s48)p 949 3244 V 30 w(extract)p 1287 3244 V 28 w(boolean)p
1623 3244 V 29 w(2\(s48)p 1872 3244 V 29 w(call)p 2077
3244 V 30 w(t,)40 b(s48)p 2367 3244 V 31 w(ref)p 2530
3244 V 30 w(t\))p Black 307 3343 a Fn(\017)p Black 41
w Fo(long)248 b(s48)p 951 3343 V 30 w(extract)p 1289
3343 V 28 w(char)p 1493 3343 V 30 w(2\(s48)p 1743 3343
V 29 w(call)p 1948 3343 V 30 w(t,)41 b(s48)p 2239 3343
V 30 w(ref)p 2401 3343 V 30 w(t\))p Black 307 3443 a
Fn(\017)p Black 41 w Fo(char)f(*)166 b(s48)p 953 3443
V 30 w(extract)p 1291 3443 V 28 w(byte)p 1495 3443 V
30 w(vector)p 1789 3443 V 29 w(2\(s48)p 2038 3443 V 29
w(call)p 2243 3443 V 30 w(t,)41 b(s48)p 2534 3443 V 30
w(ref)p 2696 3443 V 30 w(t\))p Black 307 3543 a Fn(\017)p
Black 41 w Fo(long)248 b(s48)p 951 3543 V 30 w(extract)p
1289 3543 V 28 w(long)p 1493 3543 V 30 w(2\(s48)p 1743
3543 V 29 w(call)p 1948 3543 V 30 w(t,)41 b(s48)p 2239
3543 V 30 w(ref)p 2401 3543 V 30 w(t\))p Black 307 3642
a Fn(\017)p Black 41 w Fo(long)248 b(s48)p 951 3642 V
30 w(extract)p 1289 3642 V 28 w(unsigned)p 1669 3642
V 28 w(long)p 1873 3642 V 30 w(2\(s48)p 2123 3642 V 29
w(call)p 2328 3642 V 30 w(t,)41 b(s48)p 2619 3642 V 30
w(ref)p 2781 3642 V 30 w(t\))p Black 307 3742 a Fn(\017)p
Black 41 w Fo(double)164 b(s48)p 955 3742 V 30 w(extract)p
1293 3742 V 28 w(double)p 1585 3742 V 29 w(2\(s48)p 1834
3742 V 30 w(call)p 2040 3742 V 29 w(t,)41 b(s48)p 2330
3742 V 30 w(ref)p 2492 3742 V 30 w(t\))p Black 307 3842
a Fn(\017)p Black 41 w Fo(s48)p 527 3842 V 30 w(ref)p
689 3842 V 30 w(t)h(s48)p 937 3842 V 30 w(enter)p 1187
3842 V 29 w(boolean)p 1524 3842 V 29 w(2\(s48)p 1773
3842 V 29 w(call)p 1978 3842 V 30 w(t,)e(int\))p Black
307 3941 a Fn(\017)p Black 41 w Fo(s48)p 527 3941 V 30
w(ref)p 689 3941 V 30 w(t)i(s48)p 937 3941 V 30 w(enter)p
1187 3941 V 29 w(char)p 1392 3941 V 30 w(2\(s48)p 1642
3941 V 29 w(call)p 1847 3941 V 30 w(t,)e(long\))p Black
307 4041 a Fn(\017)p Black 41 w Fo(s48)p 527 4041 V 30
w(ref)p 689 4041 V 30 w(t)i(s48)p 937 4041 V 30 w(enter)p
1187 4041 V 29 w(byte)p 1392 4041 V 30 w(vector)p 1686
4041 V 29 w(2\(s48)p 1935 4041 V 29 w(call)p 2140 4041
V 30 w(t,)e(char)g(*,)h(long\))2785 4140 y Fr(\(ma)n(y)27
b(GC\))p Black 307 4240 a Fn(\017)p Black 41 w Fo(s48)p
527 4240 V 30 w(ref)p 689 4240 V 30 w(t)42 b(s48)p 937
4240 V 30 w(enter)p 1187 4240 V 29 w(long)p 1392 4240
V 30 w(2\(s48)p 1642 4240 V 29 w(call)p 1847 4240 V 30
w(t,)e(long\))565 b Fr(\(ma)n(y)27 b(GC\))p Black 307
4340 a Fn(\017)p Black 41 w Fo(s48)p 527 4340 V 30 w(ref)p
689 4340 V 30 w(t)42 b(s48)p 937 4340 V 30 w(enter)p
1187 4340 V 29 w(long)p 1392 4340 V 30 w(as)p 1510 4340
V 30 w(fixnum)p 1804 4340 V 29 w(2\(s48)p 2053 4340 V
30 w(call)p 2259 4340 V 29 w(t,)f(long\))153 b Fr(\(ma)n(y)27
b(GC\))p Black 307 4439 a Fn(\017)p Black 41 w Fo(s48)p
527 4439 V 30 w(ref)p 689 4439 V 30 w(t)42 b(s48)p 937
4439 V 30 w(enter)p 1187 4439 V 29 w(double)p 1480 4439
V 29 w(2\(s48)p 1729 4439 V 29 w(call)p 1934 4439 V 30
w(t,)f(double\))389 b Fr(\(ma)n(y)27 b(GC\))291 4603
y Fo(s48)p 428 4603 V 30 w(extract)p 766 4603 V 28 w(boolean)p
1102 4603 V 29 w(2)18 b Fr(is)g(false)g(if)h(its)f(argumen)n(t)g(is)g
Fo(#f)g Fr(and)g(true)g(otherwise.)33 b Fo(s48)p 3010
4603 V 30 w(enter)p 3260 4603 V 29 w(boolean)p 3597 4603
V 29 w(2)291 4703 y Fr(is)27 b Fo(#f)g Fr(if)h(its)g(argumen)n(t)e(is)i
(zero)e(and)i Fo(#t)f Fr(otherwise.)415 4807 y(The)j
Fo(s48)p 725 4807 V 30 w(extract)p 1063 4807 V 29 w(char)p
1268 4807 V 30 w(2)f Fr(function)i(extracts)e(the)i(scalar)d(v)-5
b(alue)30 b(from)g(a)g(Sc)n(heme)291 4907 y(c)n(haracter)23
b(as)h(a)h(C)h Fo(long)p Fr(.)34 b(Con)n(v)n(ersely)-7
b(,)24 b Fo(s48)p 1708 4907 V 30 w(enter)p 1958 4907
V 29 w(char)p 2163 4907 V 30 w(2)h Fr(creates)f(a)h(Sc)n(heme)g(c)n
(harac-)291 5006 y(ter)i(from)g(a)g(scalar)f(v)-5 b(alue.)37
b(\(Note)28 b(that)g(ASCI)r(I)g(v)-5 b(alues)27 b(are)g(also)f(scalar)g
(v)-5 b(alues.\))p Black 1660 5255 a(111)p Black eop
end
%%Page: 112 120
TeXDict begin 112 119 bop 0 TeXcolorgray Black Black
Black 863 523 a Fr(The)35 b Fo(s48)p 1178 523 27 4 v
31 w(extract)p 1517 523 V 28 w(byte)p 1721 523 V 30 w(vector)p
2015 523 V 29 w(2)f Fr(function)i(needs)e(to)h(deal)g(with)g(the)h
(garbage)739 623 y(collector)c(to)h(a)n(v)n(oid)e(in)n(v)-5
b(alidating)33 b(the)h(returned)e(p)r(oin)n(ter.)53 b(F)-7
b(or)33 b(more)f(details)h(see)g(sec-)739 722 y(tion)p
0 0 1 TeXcolorrgb 28 w(8.7.3)p Black(.)863 822 y(The)41
b(second)f(argumen)n(t)f(to)h Fo(s48)p 1963 822 V 30
w(enter)p 2213 822 V 30 w(byte)p 2419 822 V 29 w(vector)p
2712 822 V 29 w(2)g Fr(is)h(the)f(length)h(of)f(b)n(yte)739
922 y(v)n(ector.)863 1021 y Fo(s48)p 1000 1021 V 31 w(enter)p
1251 1021 V 29 w(long)p 1456 1021 V 30 w(2\(\))19 b Fr(needs)i(to)g
(allo)r(cate)f(storage)g(when)h(its)g(argumen)n(t)f(is)h(to)r(o)g
(large)739 1121 y(to)27 b(\014t)g(in)h(a)e(Sc)n(heme)h(48)f(\014xn)n
(um.)37 b(In)27 b(cases)f(where)h(the)g(n)n(um)n(b)r(er)g(is)g(kno)n
(wn)f(to)h(\014t)h(within)739 1220 y(a)35 b(\014xn)n(um)h(\(curren)n
(tly)e(30)h(bits)h(on)f(a)g(32-bits)g(arc)n(hitecture)f(and)h(62)g(bit)
h(on)f(a)g(64-bits)739 1320 y(arc)n(hitecture)d(including)h(the)g
(sign\),)h(the)f(follo)n(wing)f(pro)r(cedures)f(can)i(b)r(e)g(used.)53
b(These)739 1420 y(ha)n(v)n(e)20 b(the)h(disadv)-5 b(an)n(tage)20
b(of)h(only)f(ha)n(ving)g(a)h(limited)h(range,)f(but)g(the)h(adv)-5
b(an)n(tage)19 b(of)i(nev)n(er)739 1519 y(causing)h(a)g(garbage)e
(collection.)35 b Fo(s48)p 1935 1519 V 30 w(fixnum)p
2229 1519 V 29 w(p)p 2302 1519 V 31 w(2\(s48)p 2553 1519
V 29 w(call)p 2758 1519 V 30 w(t\))22 b Fr(is)h(a)f(macro)f(that)i
(true)739 1619 y(if)28 b(its)g(argumen)n(t)e(is)i(a)f(\014xn)n(um)h
(and)f(false)g(otherwise.)p Black 755 1758 a Fn(\017)p
Black 42 w Fo(int)289 b(s48)p 1397 1758 V 30 w(fixnum)p
1691 1758 V 29 w(p)p 1764 1758 V 31 w(2\(s48)p 2015 1758
V 29 w(call)p 2220 1758 V 30 w(t,)41 b(s48)p 2511 1758
V 30 w(ref)p 2673 1758 V 30 w(t\))p Black 755 1858 a
Fn(\017)p Black 42 w Fo(s48)p 976 1858 V 30 w(ref)p 1138
1858 V 30 w(t)g(s48)p 1385 1858 V 30 w(enter)p 1635 1858
V 29 w(long)p 1840 1858 V 30 w(as)p 1958 1858 V 31 w(fixnum)p
2253 1858 V 29 w(2\(s48)p 2502 1858 V 29 w(call)p 2707
1858 V 30 w(t,)f(long\))p Black 755 1958 a Fn(\017)p
Black 42 w Fo(long)247 b(S48)p 1399 1958 V 30 w(MAX)p
1561 1958 V 30 w(FIXNUM)p 1855 1958 V 29 w(VALUE)p Black
755 2057 a Fn(\017)p Black 42 w Fo(long)g(S48)p 1399
2057 V 30 w(MIN)p 1561 2057 V 30 w(FIXNUM)p 1855 2057
V 29 w(VALUE)739 2197 y Fr(An)19 b(error)d(is)i(signaled)g(if)h(the)g
(argumen)n(t)e(to)h Fo(s48)p 2236 2197 V 30 w(enter)p
2486 2197 V 30 w(fixnum)d Fr(is)k(less)f(than)g Fo(S48)p
3330 2197 V 30 w(MIN)p 3492 2197 V 30 w(FIXNUM)p 3786
2197 V 29 w(VALUE)739 2296 y Fr(or)25 b(greater)f(than)i
Fo(S48)p 1448 2296 V 30 w(MAX)p 1610 2296 V 30 w(FIXNUM)p
1904 2296 V 29 w(VALUE)e Fr(\()p Fn(\000)p Fr(2)2311
2266 y Fk(29)2406 2296 y Fr(and)i(2)2608 2266 y Fk(29)2693
2296 y Fn(\000)14 b Fr(1)26 b(on)f(a)h(32-bits)f(arc)n(hitec-)739
2396 y(ture)i(and)h Fn(\000)p Fr(2)1183 2366 y Fk(61)1280
2396 y Fr(and)f(2)1483 2366 y Fk(62)1572 2396 y Fn(\000)18
b Fr(1)27 b(on)g(a)g(64-bits)g(arc)n(hitecture\).)p Black
755 2535 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397
2535 V 30 w(true)p 1603 2535 V 30 w(p)p 1677 2535 V 31
w(2\(s48)p 1928 2535 V 29 w(call)p 2133 2535 V 30 w(t,)40
b(s48)p 2423 2535 V 31 w(ref)p 2586 2535 V 30 w(t\))p
Black 755 2635 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p
1397 2635 V 30 w(false)p 1647 2635 V 29 w(p)p 1720 2635
V 31 w(2\(s48)p 1971 2635 V 30 w(call)p 2177 2635 V 29
w(t,)41 b(s48)p 2467 2635 V 30 w(ref)p 2629 2635 V 30
w(t\))739 2775 y(s48)p 876 2775 V 30 w(true)p 1082 2775
V 30 w(p)34 b Fr(is)g(true)g(if)h(its)g(argumen)n(t)e(is)h
Fo(s48)p 2268 2775 V 30 w(true)f Fr(and)h Fo(s48)p 2807
2775 V 30 w(false)p 3057 2775 V 30 w(p)g Fr(is)g(true)g(if)h(its)739
2874 y(argumen)n(t)26 b(is)i Fo(s48)p 1331 2874 V 30
w(false)p Fr(.)p Black 755 3014 a Fn(\017)p Black 42
w Fo(s48)p 976 3014 V 30 w(ref)p 1138 3014 V 30 w(t)41
b(s48)p 1385 3014 V 30 w(enter)p 1635 3014 V 29 w(string)p
1928 3014 V 29 w(latin)p 2177 3014 V 30 w(1)p 2251 3014
V 31 w(2\(s48)p 2502 3014 V 29 w(call)p 2707 3014 V 30
w(t,)f(char*\);)66 b Fr(\(ma)n(y)27 b(GC\))p Black 755
3113 a Fn(\017)p Black 42 w Fo(s48)p 976 3113 V 30 w(ref)p
1138 3113 V 30 w(t)41 b(s48)p 1385 3113 V 30 w(enter)p
1635 3113 V 29 w(string)p 1928 3113 V 29 w(latin)p 2177
3113 V 30 w(1)p 2251 3113 V 31 w(n)p 2326 3113 V 31 w(2\(s48)p
2577 3113 V 29 w(call)p 2782 3113 V 30 w(t,)f(char*,)f(long\);)3234
3213 y Fr(\(ma)n(y)27 b(GC\))p Black 755 3313 a Fn(\017)p
Black 42 w Fo(long)247 b(s48)p 1399 3313 V 30 w(string)p
1693 3313 V 29 w(latin)p 1942 3313 V 29 w(1)p 2015 3313
V 31 w(length)p 2310 3313 V 29 w(2\(s48)p 2559 3313 V
29 w(call)p 2764 3313 V 30 w(t,)41 b(s48)p 3055 3313
V 30 w(ref)p 3217 3313 V 30 w(t\);)p Black 755 3412 a
Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 3412 V
30 w(string)p 1693 3412 V 29 w(latin)p 1942 3412 V 29
w(1)p 2015 3412 V 31 w(length)p 2310 3412 V 29 w(n)p
2383 3412 V 31 w(2\(s48)p 2634 3412 V 29 w(call)p 2839
3412 V 30 w(t,)41 b(s48)p 3130 3412 V 30 w(ref)p 3292
3412 V 30 w(t,)g(long,)e(long\);)p Black 755 3512 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 3512 V 30 w(copy)p
1605 3512 V 30 w(latin)p 1855 3512 V 29 w(1)p 1928 3512
V 31 w(to)p 2047 3512 V 31 w(string)p 2342 3512 V 29
w(2\(s48)p 2591 3512 V 29 w(call)p 2796 3512 V 30 w(t,)40
b(char*,)f(s48)p 3389 3512 V 30 w(ref)p 3551 3512 V 31
w(t\);)p Black 755 3611 a Fn(\017)p Black 42 w Fo(void)247
b(s48)p 1399 3611 V 30 w(copy)p 1605 3611 V 30 w(latin)p
1855 3611 V 29 w(1)p 1928 3611 V 31 w(to)p 2047 3611
V 31 w(string)p 2342 3611 V 29 w(n)p 2415 3611 V 31 w(2\(s48)p
2666 3611 V 29 w(call)p 2871 3611 V 30 w(t,)40 b(char*,)f(long,)h(s48)p
3724 3611 V 30 w(ref)p 3886 3611 V 30 w(t\);)p Black
755 3711 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
3711 V 30 w(copy)p 1605 3711 V 30 w(string)p 1899 3711
V 29 w(to)p 2016 3711 V 30 w(latin)p 2266 3711 V 30 w(1)p
2340 3711 V 31 w(2\(s48)p 2591 3711 V 29 w(call)p 2796
3711 V 30 w(t,)40 b(s48)p 3086 3711 V 30 w(ref)p 3248
3711 V 31 w(t,)g(char*\);)p Black 755 3811 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 3811 V 30 w(copy)p
1605 3811 V 30 w(string)p 1899 3811 V 29 w(to)p 2016
3811 V 30 w(latin)p 2266 3811 V 30 w(1)p 2340 3811 V
31 w(n)p 2415 3811 V 31 w(2\(s48)p 2666 3811 V 29 w(call)p
2871 3811 V 30 w(t,)40 b(s48)p 3161 3811 V 30 w(ref)p
3323 3811 V 31 w(t,)g(long,)g(long,)f(char*\);)p Black
755 3910 a Fn(\017)p Black 42 w Fo(s48)p 976 3910 V 30
w(ref)p 1138 3910 V 30 w(t)i(s48)p 1385 3910 V 30 w(enter)p
1635 3910 V 29 w(string)p 1928 3910 V 29 w(utf)p 2089
3910 V 30 w(8)p 2163 3910 V 31 w(2\(s48)p 2414 3910 V
30 w(call)p 2620 3910 V 29 w(t,)g(char*\);)153 b Fr(\(ma)n(y)27
b(GC\))p Black 755 4010 a Fn(\017)p Black 42 w Fo(s48)p
976 4010 V 30 w(ref)p 1138 4010 V 30 w(t)41 b(s48)p 1385
4010 V 30 w(enter)p 1635 4010 V 29 w(string)p 1928 4010
V 29 w(utf)p 2089 4010 V 30 w(8)p 2163 4010 V 31 w(n)p
2238 4010 V 31 w(2\(s48)p 2489 4010 V 30 w(call)p 2695
4010 V 29 w(t,)g(char*,)e(long\);)3234 4110 y Fr(\(ma)n(y)27
b(GC\))p Black 755 4209 a Fn(\017)p Black 42 w Fo(long)247
b(s48)p 1399 4209 V 30 w(string)p 1693 4209 V 29 w(utf)p
1854 4209 V 30 w(8)p 1928 4209 V 31 w(length)p 2223 4209
V 29 w(2\(s48)p 2472 4209 V 29 w(call)p 2677 4209 V 30
w(t,)41 b(s48)p 2968 4209 V 30 w(ref)p 3130 4209 V 30
w(t\);)p Black 755 4309 a Fn(\017)p Black 42 w Fo(long)247
b(s48)p 1399 4309 V 30 w(string)p 1693 4309 V 29 w(utf)p
1854 4309 V 30 w(8)p 1928 4309 V 31 w(length)p 2223 4309
V 29 w(n)p 2296 4309 V 31 w(2\(s48)p 2547 4309 V 29 w(call)p
2752 4309 V 30 w(t,)41 b(s48)p 3043 4309 V 30 w(ref)p
3205 4309 V 30 w(t,)g(long,)e(long\);)p Black 755 4408
a Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 4408
V 30 w(copy)p 1605 4408 V 30 w(string)p 1899 4408 V 29
w(to)p 2016 4408 V 30 w(utf)p 2178 4408 V 30 w(8)p 2252
4408 V 31 w(2\(s48)p 2503 4408 V 30 w(call)p 2709 4408
V 29 w(t,)41 b(s48)p 2999 4408 V 30 w(ref)p 3161 4408
V 30 w(t,)g(char*\);)p Black 755 4508 a Fn(\017)p Black
42 w Fo(long)247 b(s48)p 1399 4508 V 30 w(copy)p 1605
4508 V 30 w(string)p 1899 4508 V 29 w(to)p 2016 4508
V 30 w(utf)p 2178 4508 V 30 w(8)p 2252 4508 V 31 w(n)p
2327 4508 V 31 w(2\(s48)p 2578 4508 V 30 w(call)p 2784
4508 V 29 w(t,)41 b(s48)p 3074 4508 V 30 w(ref)p 3236
4508 V 30 w(t,)g(long,)e(long,)h(char*\);)p Black 755
4608 a Fn(\017)p Black 42 w Fo(s48)p 976 4608 V 30 w(ref)p
1138 4608 V 30 w(t)h(s48)p 1385 4608 V 30 w(enter)p 1635
4608 V 29 w(string)p 1928 4608 V 29 w(utf)p 2089 4608
V 30 w(16be)p 2295 4608 V 30 w(2\(s48)p 2545 4608 V 29
w(call)p 2750 4608 V 30 w(t,)g(char*\);)3234 4707 y Fr(\(ma)n(y)27
b(GC\))p Black 755 4807 a Fn(\017)p Black 42 w Fo(s48)p
976 4807 V 30 w(ref)p 1138 4807 V 30 w(t)41 b(s48)p 1385
4807 V 30 w(enter)p 1635 4807 V 29 w(string)p 1928 4807
V 29 w(utf)p 2089 4807 V 30 w(16be)p 2295 4807 V 30 w(n)p
2369 4807 V 31 w(2\(s48)p 2620 4807 V 29 w(call)p 2825
4807 V 30 w(t,)g(char*,)e(long\);)3234 4907 y Fr(\(ma)n(y)27
b(GC\))p Black 755 5006 a Fn(\017)p Black 42 w Fo(long)247
b(s48)p 1399 5006 V 30 w(string)p 1693 5006 V 29 w(utf)p
1854 5006 V 30 w(16be)p 2060 5006 V 30 w(length)p 2354
5006 V 29 w(2\(s48)p 2603 5006 V 29 w(call)p 2808 5006
V 30 w(t,)40 b(s48)p 3098 5006 V 31 w(ref)p 3261 5006
V 30 w(t\);)p Black 2109 5255 a Fr(112)p Black eop end
%%Page: 113 121
TeXDict begin 113 120 bop 0 TeXcolorgray Black Black
Black Black 307 523 a Fn(\017)p Black 41 w Fo(long)248
b(s48)p 951 523 27 4 v 30 w(string)p 1245 523 V 29 w(utf)p
1406 523 V 30 w(16be)p 1612 523 V 30 w(length)p 1906
523 V 28 w(n)p 1978 523 V 31 w(2\(s48)p 2229 523 V 30
w(call)p 2435 523 V 29 w(t,)41 b(s48)p 2725 523 V 30
w(ref)p 2887 523 V 30 w(t,)g(long,)f(long\);)p Black
307 623 a Fn(\017)p Black 41 w Fo(long)248 b(s48)p 951
623 V 30 w(copy)p 1157 623 V 29 w(string)p 1450 623 V
29 w(to)p 1567 623 V 31 w(utf)p 1730 623 V 30 w(16be)p
1936 623 V 30 w(2\(s48)p 2186 623 V 29 w(call)p 2391
623 V 30 w(t,)41 b(s48)p 2682 623 V 30 w(ref)p 2844 623
V 30 w(t,)f(char*\);)p Black 307 722 a Fn(\017)p Black
41 w Fo(long)248 b(s48)p 951 722 V 30 w(copy)p 1157 722
V 29 w(string)p 1450 722 V 29 w(to)p 1567 722 V 31 w(utf)p
1730 722 V 30 w(16be)p 1936 722 V 30 w(n)p 2010 722 V
31 w(2\(s48)p 2261 722 V 29 w(call)p 2466 722 V 30 w(t,)40
b(s48)p 2756 722 V 31 w(ref)p 2919 722 V 30 w(t,)g(long,)g(long,)f
(char*\);)p Black 307 822 a Fn(\017)p Black 41 w Fo(s48)p
527 822 V 30 w(ref)p 689 822 V 30 w(t)j(s48)p 937 822
V 30 w(enter)p 1187 822 V 29 w(string)p 1480 822 V 29
w(utf)p 1641 822 V 30 w(16le)p 1847 822 V 30 w(2\(s48)p
2097 822 V 29 w(call)p 2302 822 V 30 w(t,)f(char*\);)2785
922 y Fr(\(ma)n(y)27 b(GC\))p Black 307 1021 a Fn(\017)p
Black 41 w Fo(s48)p 527 1021 V 30 w(ref)p 689 1021 V
30 w(t)42 b(s48)p 937 1021 V 30 w(enter)p 1187 1021 V
29 w(string)p 1480 1021 V 29 w(utf)p 1641 1021 V 30 w(16le)p
1847 1021 V 30 w(n)p 1921 1021 V 31 w(2\(s48)p 2172 1021
V 29 w(call)p 2377 1021 V 30 w(t,)e(char*,)g(long\);)2785
1121 y Fr(\(ma)n(y)27 b(GC\))p Black 307 1220 a Fn(\017)p
Black 41 w Fo(long)248 b(s48)p 951 1220 V 30 w(string)p
1245 1220 V 29 w(utf)p 1406 1220 V 30 w(16le)p 1612 1220
V 30 w(length)p 1906 1220 V 28 w(2\(s48)p 2154 1220 V
30 w(call)p 2360 1220 V 29 w(t,)41 b(s48)p 2650 1220
V 30 w(ref)p 2812 1220 V 30 w(t\);)p Black 307 1320 a
Fn(\017)p Black 41 w Fo(long)248 b(s48)p 951 1320 V 30
w(string)p 1245 1320 V 29 w(utf)p 1406 1320 V 30 w(16le)p
1612 1320 V 30 w(length)p 1906 1320 V 28 w(n)p 1978 1320
V 31 w(2\(s48)p 2229 1320 V 30 w(call)p 2435 1320 V 29
w(t,)41 b(s48)p 2725 1320 V 30 w(ref)p 2887 1320 V 30
w(t,)g(long,)f(long\);)p Black 307 1420 a Fn(\017)p Black
41 w Fo(long)248 b(s48)p 951 1420 V 30 w(copy)p 1157
1420 V 29 w(string)p 1450 1420 V 29 w(to)p 1567 1420
V 31 w(utf)p 1730 1420 V 30 w(16le)p 1936 1420 V 30 w(2\(s48)p
2186 1420 V 29 w(call)p 2391 1420 V 30 w(t,)41 b(s48)p
2682 1420 V 30 w(ref)p 2844 1420 V 30 w(t,)f(char*\);)p
Black 307 1519 a Fn(\017)p Black 41 w Fo(long)248 b(s48)p
951 1519 V 30 w(copy)p 1157 1519 V 29 w(string)p 1450
1519 V 29 w(to)p 1567 1519 V 31 w(utf)p 1730 1519 V 30
w(16le)p 1936 1519 V 30 w(n)p 2010 1519 V 31 w(2\(s48)p
2261 1519 V 29 w(call)p 2466 1519 V 30 w(t,)40 b(s48)p
2756 1519 V 31 w(ref)p 2919 1519 V 30 w(t,)g(long,)g(long,)f(char*\);)
291 1685 y Fr(The)d Fo(s48)p 607 1685 V 30 w(enter)p
857 1685 V 30 w(string)p 1151 1685 V 29 w(latin)p 1400
1685 V 29 w(1)p 1473 1685 V 31 w(2)g Fr(function)h(creates)f(a)g(Sc)n
(heme)h(string,)h(initializ-)291 1785 y(ing)k(its)i(con)n(ten)n(ts)e
(from)h(its)g(NUL-terminated,)48 b(Latin-1-enco)r(ded)41
b(argumen)n(t.)83 b(The)291 1885 y Fo(s48)p 428 1885
V 30 w(enter)p 678 1885 V 29 w(string)p 971 1885 V 29
w(latin)p 1220 1885 V 29 w(1)p 1293 1885 V 31 w(n)p 1368
1885 V 31 w(2)34 b Fr(function)g(do)r(es)g(the)g(same,)h(but)f(allo)n
(ws)f(sp)r(ecifying)291 1984 y(the)28 b(length)f(explicitly|no)h(NUL)g
(terminator)e(is)i(necessary)-7 b(.)415 2089 y(The)33
b Fo(s48)p 728 2089 V 30 w(string)p 1022 2089 V 29 w(latin)p
1271 2089 V 30 w(1)p 1345 2089 V 31 w(length)p 1640 2089
V 29 w(2)f Fr(function)i(computes)f(the)h(length)f(that)h(the)291
2189 y(Latin-1)22 b(enco)r(ding)i(of)f(its)h(argumen)n(t)f(\(a)h(Sc)n
(heme)f(string\))h(w)n(ould)f(o)r(ccup)n(y)-7 b(,)24
b(not)g(including)291 2289 y(NUL)k(termination.)37 b(The)28
b Fo(s48)p 1288 2289 V 30 w(string)p 1582 2289 V 29 w(latin)p
1831 2289 V 30 w(1)p 1905 2289 V 31 w(length)p 2200 2289
V 29 w(2)f Fr(function)i(do)r(es)e(the)h(same,)291 2388
y(but)g(allo)n(ws)e(sp)r(ecifying)i(a)f(starting)g(index)g(and)h(a)f
(coun)n(t)g(in)n(to)g(the)h(input)h(string.)415 2493
y(The)34 b Fo(s48)p 729 2493 V 30 w(copy)p 935 2493 V
30 w(latin)p 1185 2493 V 29 w(1)p 1258 2493 V 31 w(to)p
1377 2493 V 30 w(string)p 1671 2493 V 29 w(2)f Fr(function)h(copies)f
(Latin-1-enco)r(ded)f(c)n(har-)291 2593 y(acters)19 b(from)h(its)h
(second)f(NUL-terminated)g(argumen)n(t)f(to)i(the)g(Sc)n(heme)f(string)
g(that)g(is)h(its)291 2693 y(third)30 b(argumen)n(t.)43
b(The)31 b Fo(s48)p 1223 2693 V 30 w(copy)p 1429 2693
V 30 w(latin)p 1679 2693 V 29 w(1)p 1752 2693 V 31 w(to)p
1871 2693 V 30 w(string)p 2165 2693 V 29 w(n)p 2238 2693
V 31 w(2)f Fr(do)r(es)g(the)h(same,)f(but)h(al-)291 2792
y(lo)n(ws)17 b(sp)r(ecifying)h(the)h(n)n(um)n(b)r(er)f(of)h(c)n
(haracters)d(explicitly)-7 b(.)34 b(The)18 b Fo(s48)p
2419 2792 V 30 w(copy)p 2625 2792 V 30 w(string)p 2919
2792 V 29 w(to)p 3036 2792 V 30 w(latin)p 3286 2792 V
30 w(1)p 3360 2792 V 31 w(2)291 2892 y Fr(function)24
b(con)n(v)n(erts)e(the)i(c)n(haracters)e(of)h(the)i(Sc)n(heme)e(string)
h(sp)r(eci\014ed)g(as)f(the)h(second)f(ar-)291 2992 y(gumen)n(t)h(in)n
(to)h(Latin-1)f(and)g(writes)h(them)g(in)n(to)g(the)g(string)f(sp)r
(eci\014ed)h(as)f(the)h(third)g(argu-)291 3091 y(men)n(t.)34
b(\(Note)18 b(that)h(it)g(do)r(es)f(not)g(NUL-terminate)h(the)f
(result.\))34 b(The)19 b Fo(s48)p 2613 3091 V 30 w(copy)p
2819 3091 V 29 w(string)p 3112 3091 V 29 w(to)p 3229
3091 V 31 w(latin)p 3480 3091 V 29 w(1)p 3553 3091 V
31 w(n)p 3628 3091 V 31 w(2)291 3191 y Fr(function)30
b(do)r(es)f(the)h(same,)g(but)g(allo)n(ws)e(sp)r(ecifying)i(a)f
(starting)g(index)g(and)h(a)f(c)n(haracter)291 3290 y(coun)n(t)e(in)n
(to)g(the)h(source)f(string.)415 3396 y(The)19 b Fo(s48)p
714 3396 V 30 w(extract)p 1052 3396 V 28 w(latin)p 1300
3396 V 29 w(1)p 1373 3396 V 31 w(from)p 1580 3396 V 30
w(string)p 1874 3396 V 29 w(2)f Fr(function)h(returns)f(a)g(bu\013er)g
(that)h(con-)291 3495 y(tains)26 b(the)g(Latin-1)g(enco)r(ded)g(c)n
(haracters)e(including)i(NUL)h(termination)f(of)g(the)h(Sc)n(heme)291
3595 y(string)32 b(sp)r(eci\014ed.)54 b(The)34 b(bu\013er)f(that)g(is)h
(returned)e(is)h(a)g(lo)r(cal)g(bu\013er)g(managed)g(b)n(y)g(the)291
3694 y(foreign-function)21 b(in)n(terface)h(and)g(is)g(automatically)g
(freed)g(on)g(the)h(return)f(of)g(the)h(curren)n(t)291
3794 y(call.)415 3899 y(The)40 b Fo(s48)p 735 3899 V
30 w(enter)p 985 3899 V 29 w(string)p 1278 3899 V 29
w(utf)p 1439 3899 V 30 w(8)p 1513 3899 V 31 w(2)g Fr(function)g
(creates)f(a)g(Sc)n(heme)h(string,)i(initial-)291 3999
y(izing)c(its)i(con)n(ten)n(ts)e(from)h(its)g(NUL-terminated,)j
(UTF-8-enco)r(ded)d(argumen)n(t.)70 b(The)291 4099 y
Fo(s48)p 428 4099 V 30 w(enter)p 678 4099 V 29 w(string)p
971 4099 V 29 w(utf)p 1132 4099 V 30 w(8)p 1206 4099
V 31 w(n)p 1281 4099 V 31 w(2)26 b Fr(function)h(do)r(es)f(the)g(same,)
g(but)h(allo)n(ws)e(sp)r(ecifying)i(the)291 4198 y(length)g
(explicitly|no)h(NUL)g(terminator)e(is)i(necessary)-7
b(.)415 4303 y(The)19 b Fo(s48)p 714 4303 V 30 w(string)p
1008 4303 V 29 w(utf)p 1169 4303 V 30 w(8)p 1243 4303
V 31 w(length)p 1538 4303 V 29 w(2)f Fr(function)h(computes)f(the)h
(length)f(that)h(the)f(UTF-)291 4403 y(8)25 b(enco)r(ding)g(of)h(its)f
(argumen)n(t)g(\(a)g(Sc)n(heme)h(string\))f(w)n(ould)g(o)r(ccup)n(y)-7
b(,)26 b(not)g(including)f(NUL)291 4503 y(termination.)42
b(The)30 b Fo(s48)p 1091 4503 V 30 w(string)p 1385 4503
V 29 w(utf)p 1546 4503 V 30 w(8)p 1620 4503 V 31 w(length)p
1915 4503 V 29 w(2)g Fr(function)g(do)r(es)f(the)i(same,)e(but)i(al-)
291 4602 y(lo)n(ws)26 b(sp)r(ecifying)i(a)f(starting)g(index)g(and)h(a)
f(coun)n(t)g(in)n(to)h(the)g(input)g(string.)415 4707
y(The)40 b Fo(s48)p 735 4707 V 30 w(copy)p 941 4707 V
29 w(string)p 1234 4707 V 29 w(to)p 1351 4707 V 31 w(utf)p
1514 4707 V 30 w(8)p 1588 4707 V 31 w(2)f Fr(function)h(con)n(v)n(erts)
d(the)j(c)n(haracters)d(of)j(the)291 4807 y(Sc)n(heme)34
b(string)g(sp)r(eci\014ed)h(as)f(the)i(second)e(argumen)n(t)f(in)n(to)i
(UTF-8)f(and)h(writes)f(them)291 4907 y(in)n(to)f(the)h(string)f(sp)r
(eci\014ed)h(as)f(the)h(third)g(argumen)n(t.)54 b(\(Note)34
b(that)g(it)g(do)r(es)f(not)h(NUL-)291 5006 y(terminate)j(the)g
(result.\))66 b(The)37 b Fo(s48)p 1473 5006 V 30 w(copy)p
1679 5006 V 30 w(string)p 1973 5006 V 29 w(to)p 2090
5006 V 30 w(utf)p 2252 5006 V 30 w(8)p 2326 5006 V 31
w(n)p 2401 5006 V 31 w(2)g Fr(function)h(do)r(es)f(the)p
Black 1660 5255 a(113)p Black eop end
%%Page: 114 122
TeXDict begin 114 121 bop 0 TeXcolorgray Black Black
Black 739 523 a Fr(same,)41 b(but)f(allo)n(ws)e(sp)r(ecifying)h(a)f
(starting)h(index)g(and)g(a)f(c)n(haracter)f(coun)n(t)i(in)n(to)g(the)
739 623 y(source)26 b(string.)36 b(Both)28 b(return)f(the)h(length)g
(of)f(the)h(written)g(enco)r(dings)f(in)h(b)n(ytes.)863
722 y(The)i Fo(s48)p 1173 722 27 4 v 30 w(extract)p 1511
722 V 28 w(utf)p 1671 722 V 31 w(8)p 1746 722 V 31 w(from)p
1953 722 V 29 w(string)p 2246 722 V 29 w(2)f Fr(function)h(returns)f(a)
g(bu\013er)g(that)h(con-)739 822 y(tains)e(the)g(UTF-8)g(enco)r(ded)g
(c)n(haracters)e(including)i(NUL)h(termination)f(of)g(the)g(Sc)n(heme)
739 922 y(string)k(sp)r(eci\014ed.)55 b(The)33 b(bu\013er)g(that)h(is)f
(returned)g(is)g(a)g(lo)r(cal)f(bu\013er)i(managed)e(b)n(y)h(the)739
1021 y(foreign-function)22 b(in)n(terface)f(and)h(is)h(automatically)e
(freed)h(on)g(the)h(return)f(of)g(the)h(curren)n(t)739
1121 y(call.)863 1220 y(The)31 b(functions)h(with)f Fo(utf)p
1728 1220 V 30 w(16)f Fr(in)i(their)e(names)h(w)n(ork)e(analogously)g
(to)i(their)f Fo(utf)p 3534 1220 V 31 w(8)739 1320 y
Fr(coun)n(terparts,)h(but)i(implemen)n(t)f(the)g(UTF-16)f(enco)r
(dings.)49 b(The)32 b(lengths)f(returned)h(b)r(e)739
1420 y(the)p 887 1420 V 59 w Fo(length)25 b Fr(and)i
Fo(copy)p 1544 1420 V 30 w(string)p 1838 1420 V 29 w(to)f
Fr(functions)i(are)e(in)i(terms)f(of)g(UTF-16)g(co)r(de)g(units.)739
1519 y(The)32 b Fo(extract)e Fr(function)j(returns)f(a)g(lo)r(cal)g
(bu\013er)h(that)f(con)n(tains)g(UTF-16)g(co)r(de)g(units)739
1619 y(including)c(NUL)g(termination.)739 1848 y Fe(8.5.3)112
b(C)38 b(v)m(ersions)g(of)f(Sc)m(heme)i(pro)s(cedures)739
2001 y Fr(The)23 b(follo)n(wing)f(macros)g(and)h(pro)r(cedures)f(are)g
(C)h(v)n(ersions)f(of)h(Sc)n(heme)g(pro)r(cedures.)34
b(The)739 2100 y(names)27 b(w)n(ere)g(deriv)n(ed)f(b)n(y)i(replacing)e
(`)p Fo(-)p Fr(')i(with)g(`)p 2281 2100 V 31 w(',)g(`)p
Fo(?)p Fr(')37 b(with)28 b(`)p 2725 2100 V 31 w Fo(p)p
Fr(',)f(and)h(dropping)f(`)p Fo(!)p Fr(.)p Black 755
2233 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 2233
V 30 w(eq)p 1515 2233 V 31 w(p)p 1590 2233 V 31 w(2\(s48)p
1841 2233 V 29 w(call)p 2046 2233 V 30 w(t,)40 b(s48)p
2336 2233 V 30 w(ref)p 2498 2233 V 31 w(t,)g(s48)p 2789
2233 V 30 w(ref)p 2951 2233 V 30 w(t\))p Black 755 2332
a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 2332 V
30 w(char)p 1603 2332 V 30 w(p)p 1677 2332 V 31 w(2\(s48)p
1928 2332 V 29 w(call)p 2133 2332 V 30 w(t,)40 b(s48)p
2423 2332 V 31 w(ref)p 2586 2332 V 30 w(t\))p Black 755
2432 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 2432
V 30 w(null)p 1603 2432 V 30 w(p)p 1677 2432 V 31 w(2\(s48)p
1928 2432 V 29 w(call)p 2133 2432 V 30 w(t,)40 b(s48)p
2423 2432 V 31 w(ref)p 2586 2432 V 30 w(t\))p Black 755
2564 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 2564
V 30 w(pair)p 1603 2564 V 30 w(p)p 1677 2564 V 31 w(2\(s48)p
1928 2564 V 29 w(call)p 2133 2564 V 30 w(t,)40 b(s48)p
2423 2564 V 31 w(ref)p 2586 2564 V 30 w(t\))p Black 755
2664 a Fn(\017)p Black 42 w Fo(s48)p 976 2664 V 30 w(ref)p
1138 2664 V 30 w(t)h(s48)p 1385 2664 V 30 w(car)p 1547
2664 V 30 w(2\(s48)p 1797 2664 V 29 w(call)p 2002 2664
V 30 w(t,)g(s48)p 2293 2664 V 30 w(ref)p 2455 2664 V
30 w(t\))p Black 755 2763 a Fn(\017)p Black 42 w Fo(s48)p
976 2763 V 30 w(ref)p 1138 2763 V 30 w(t)g(s48)p 1385
2763 V 30 w(cdr)p 1547 2763 V 30 w(2\(s48)p 1797 2763
V 29 w(call)p 2002 2763 V 30 w(t,)g(s48)p 2293 2763 V
30 w(ref)p 2455 2763 V 30 w(t\))p Black 755 2863 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 2863 V 30 w(set)p
1561 2863 V 30 w(car)p 1723 2863 V 30 w(2\(s48)p 1973
2863 V 30 w(call)p 2179 2863 V 29 w(t,)41 b(s48)p 2469
2863 V 30 w(ref)p 2631 2863 V 30 w(t,)g(s48)p 2922 2863
V 30 w(ref)p 3084 2863 V 30 w(t\))p Black 755 2963 a
Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399 2963 V
30 w(set)p 1561 2963 V 30 w(cdr)p 1723 2963 V 30 w(2\(s48)p
1973 2963 V 30 w(call)p 2179 2963 V 29 w(t,)41 b(s48)p
2469 2963 V 30 w(ref)p 2631 2963 V 30 w(t,)g(s48)p 2922
2963 V 30 w(ref)p 3084 2963 V 30 w(t\))p Black 755 3062
a Fn(\017)p Black 42 w Fo(s48)p 976 3062 V 30 w(ref)p
1138 3062 V 30 w(t)g(s48)p 1385 3062 V 30 w(cons)p 1591
3062 V 30 w(2\(s48)p 1841 3062 V 29 w(call)p 2046 3062
V 30 w(t,)f(s48)p 2336 3062 V 31 w(ref)p 2499 3062 V
30 w(t,)g(s48)p 2789 3062 V 31 w(ref)p 2952 3062 V 30
w(t\))169 b Fr(\(ma)n(y)27 b(GC\))p Black 755 3162 a
Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 3162 V
30 w(length)p 1693 3162 V 29 w(2\(s48)p 1942 3162 V 29
w(call)p 2147 3162 V 30 w(t,)41 b(s48)p 2438 3162 V 30
w(ref)p 2600 3162 V 30 w(t\))p Black 755 3294 a Fn(\017)p
Black 42 w Fo(int)289 b(s48)p 1397 3294 V 30 w(vector)p
1691 3294 V 29 w(p)p 1764 3294 V 31 w(2\(s48)p 2015 3294
V 29 w(call)p 2220 3294 V 30 w(t,)41 b(s48)p 2511 3294
V 30 w(ref)p 2673 3294 V 30 w(t\))p Black 755 3394 a
Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 3394 V
30 w(vector)p 1693 3394 V 29 w(length)p 1986 3394 V 29
w(2\(s48)p 2235 3394 V 29 w(call)p 2440 3394 V 30 w(t,)41
b(s48)p 2731 3394 V 30 w(ref)p 2893 3394 V 30 w(t\))p
Black 755 3493 a Fn(\017)p Black 42 w Fo(s48)p 976 3493
V 30 w(ref)p 1138 3493 V 30 w(t)g(s48)p 1385 3493 V 30
w(vector)p 1679 3493 V 29 w(ref)p 1840 3493 V 30 w(2\(s48)p
2090 3493 V 29 w(call)p 2295 3493 V 30 w(t,)g(s48)p 2586
3493 V 30 w(ref)p 2748 3493 V 30 w(t,)g(long\))p Black
755 3593 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
3593 V 30 w(vector)p 1693 3593 V 29 w(set)p 1854 3593
V 30 w(2\(s48)p 2104 3593 V 29 w(call)p 2309 3593 V 30
w(t,)41 b(s48)p 2600 3593 V 30 w(ref)p 2762 3593 V 30
w(t,)g(long,)e(s48)p 3312 3593 V 30 w(ref)p 3474 3593
V 31 w(t\))p Black 755 3692 a Fn(\017)p Black 42 w Fo(s48)p
976 3692 V 30 w(ref)p 1138 3692 V 30 w(t)i(s48)p 1385
3692 V 30 w(make)p 1591 3692 V 30 w(vector)p 1885 3692
V 29 w(2\(s48)p 2134 3692 V 29 w(call)p 2339 3692 V 30
w(t,)f(long,)g(s48)p 2889 3692 V 30 w(ref)p 3051 3692
V 30 w(t\))70 b Fr(\(ma)n(y)27 b(GC\))p Black 755 3825
a Fn(\017)p Black 42 w Fo(int)289 b(s48)p 1397 3825 V
30 w(string)p 1691 3825 V 29 w(p)p 1764 3825 V 31 w(2\(s48)p
2015 3825 V 29 w(call)p 2220 3825 V 30 w(t,)41 b(s48)p
2511 3825 V 30 w(ref)p 2673 3825 V 30 w(t\))p Black 755
3924 a Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399
3924 V 30 w(string)p 1693 3924 V 29 w(length)p 1986 3924
V 29 w(2\(s48)p 2235 3924 V 29 w(call)p 2440 3924 V 30
w(t,)41 b(s48)p 2731 3924 V 30 w(ref)p 2893 3924 V 30
w(t\))p Black 755 4024 a Fn(\017)p Black 42 w Fo(long)247
b(s48)p 1399 4024 V 30 w(string)p 1693 4024 V 29 w(ref)p
1854 4024 V 30 w(2\(s48)p 2104 4024 V 29 w(call)p 2309
4024 V 30 w(t,)41 b(s48)p 2600 4024 V 30 w(ref)p 2762
4024 V 30 w(t,)g(long\))p Black 755 4123 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 4123 V 30 w(string)p
1693 4123 V 29 w(set)p 1854 4123 V 30 w(2\(s48)p 2104
4123 V 29 w(call)p 2309 4123 V 30 w(t,)41 b(s48)p 2600
4123 V 30 w(ref)p 2762 4123 V 30 w(t,)g(long,)e(long\))p
Black 755 4223 a Fn(\017)p Black 42 w Fo(s48)p 976 4223
V 30 w(ref)p 1138 4223 V 30 w(t)i(s48)p 1385 4223 V 30
w(make)p 1591 4223 V 30 w(string)p 1885 4223 V 29 w(2\(s48)p
2134 4223 V 29 w(call)p 2339 4223 V 30 w(t,)f(long,)g(char\))262
b Fr(\(ma)n(y)27 b(GC\))p Black 755 4355 a Fn(\017)p
Black 42 w Fo(int)289 b(s48)p 1397 4355 V 30 w(symbol)p
1691 4355 V 29 w(p)p 1764 4355 V 31 w(2\(s48)p 2015 4355
V 29 w(call)p 2220 4355 V 30 w(t,)41 b(s48)p 2511 4355
V 30 w(ref)p 2673 4355 V 30 w(t\))p Black 755 4455 a
Fn(\017)p Black 42 w Fo(s48)p 976 4455 V 30 w(ref)p 1138
4455 V 30 w(t)g(s48)p 1385 4455 V 30 w(symbol)p 1679
4455 V 29 w(to)p 1796 4455 V 30 w(string)p 2090 4455
V 29 w(2\(s48)p 2339 4455 V 30 w(call)p 2545 4455 V 29
w(t,)g(s48)p 2835 4455 V 30 w(ref)p 2997 4455 V 30 w(t\))p
Black 755 4587 a Fn(\017)p Black 42 w Fo(int)289 b(s48)p
1397 4587 V 30 w(byte)p 1603 4587 V 30 w(vector)p 1897
4587 V 29 w(p)p 1970 4587 V 31 w(2\(s48)p 2221 4587 V
29 w(call)p 2426 4587 V 30 w(t,)40 b(s48)p 2716 4587
V 30 w(ref)p 2878 4587 V 31 w(t\))p Black 755 4687 a
Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 4687 V
30 w(byte)p 1605 4687 V 30 w(vector)p 1899 4687 V 29
w(length)p 2192 4687 V 29 w(2\(s48)p 2441 4687 V 29 w(call)p
2646 4687 V 30 w(t,)40 b(s48)p 2936 4687 V 30 w(ref)p
3098 4687 V 31 w(t\))p Black 755 4786 a Fn(\017)p Black
42 w Fo(char)247 b(s48)p 1399 4786 V 30 w(byte)p 1605
4786 V 30 w(vector)p 1899 4786 V 29 w(ref)p 2060 4786
V 30 w(2\(s48)p 2310 4786 V 29 w(call)p 2515 4786 V 30
w(t,)41 b(s48)p 2806 4786 V 30 w(ref)p 2968 4786 V 30
w(t,)g(long\))p Black 755 4886 a Fn(\017)p Black 42 w
Fo(void)247 b(s48)p 1399 4886 V 30 w(byte)p 1605 4886
V 30 w(vector)p 1899 4886 V 29 w(set)p 2060 4886 V 30
w(2\(s48)p 2310 4886 V 29 w(call)p 2515 4886 V 30 w(t,)41
b(s48)p 2806 4886 V 30 w(ref)p 2968 4886 V 30 w(t,)g(long,)e(int\))p
Black 755 4985 a Fn(\017)p Black 42 w Fo(s48)p 976 4985
V 30 w(ref)p 1138 4985 V 30 w(t)i(s48)p 1385 4985 V 30
w(make)p 1591 4985 V 30 w(byte)p 1797 4985 V 29 w(vector)p
2090 4985 V 29 w(2\(s48)p 2339 4985 V 30 w(call)p 2545
4985 V 29 w(t,)g(long,)f(int\))100 b Fr(\(ma)n(y)27 b(GC\))p
Black 2109 5255 a(114)p Black eop end
%%Page: 115 123
TeXDict begin 115 122 bop 0 TeXcolorgray Black Black
Black 291 523 a Fj(8.6)135 b(Calling)46 b(Sc)l(heme)f(functions)g(from)
g(C)291 705 y Fr(External)29 b(co)r(de)h(that)g(has)g(b)r(een)h(called)
f(from)f(Sc)n(heme)i(can)e(call)h(bac)n(k)g(to)g(Sc)n(heme)g(pro-)291
805 y(cedures)c(using)i(the)g(follo)n(wing)e(function.)p
Black 307 936 a Fn(\017)p Black 41 w Fo(s48)p 527 936
27 4 v 30 w(ref)p 689 936 V 30 w(t)42 b(s48)p 937 936
V 30 w(call)p 1143 936 V 29 w(scheme)p 1436 936 V 29
w(2\(s48)p 1685 936 V 30 w(call)p 1891 936 V 29 w(t,)f(s48)p
2181 936 V 30 w(ref)p 2343 936 V 30 w(t)g(p,)g(long)f(nargs,)f(...\))
291 1067 y Fr(This)34 b(calls)h(the)g(Sc)n(heme)g(pro)r(cedure)f
Fo(p)g Fr(on)h Fo(nargs)e Fr(argumen)n(ts,)j(whic)n(h)e(are)g(passed)h
(as)291 1166 y(additional)k(argumen)n(ts)g(to)h Fo(s48)p
1363 1166 V 30 w(call)p 1569 1166 V 30 w(scheme)p 1863
1166 V 29 w(2)p Fr(.)74 b(There)40 b(ma)n(y)f(b)r(e)i(at)f(most)g(t)n
(w)n(elv)n(e)291 1266 y(argumen)n(ts.)61 b(The)36 b(v)-5
b(alue)37 b(returned)e(b)n(y)h(the)h(Sc)n(heme)f(pro)r(cedure)g(is)g
(returned)g(b)n(y)g(the)291 1366 y(C)28 b(pro)r(cedure.)38
b(In)n(v)n(oking)27 b(an)n(y)h(Sc)n(heme)g(pro)r(cedure)g(ma)n(y)f(p)r
(oten)n(tially)i(cause)e(a)h(garbage)291 1465 y(collection.)415
1565 y(There)19 b(are)e(some)i(complications)f(that)h(o)r(ccur)f(when)i
(mixing)e(calls)h(from)f(C)h(to)g(Sc)n(heme)291 1665
y(with)29 b(con)n(tin)n(uations)f(and)h(threads.)40 b(C)29
b(only)g(supp)r(orts)f(do)n(wn)n(w)n(ard)f(con)n(tin)n(uations)h(\(via)
291 1764 y Fo(longjmp\(\))p Fr(\).)39 b(Sc)n(heme)30
b(con)n(tin)n(uations)e(that)i(capture)f(a)g(p)r(ortion)g(of)h(the)g(C)
f(stac)n(k)g(ha)n(v)n(e)291 1864 y(to)40 b(follo)n(w)g(the)i(same)e
(restriction.)76 b(F)-7 b(or)40 b(example,)k(supp)r(ose)c(Sc)n(heme)h
(pro)r(cedure)f Fo(s0)291 1963 y Fr(captures)f(con)n(tin)n(uation)h
Fo(a)g Fr(and)g(then)h(calls)f(C)g(pro)r(cedure)g Fo(c0)p
Fr(,)j(whic)n(h)d(in)h(turn)g(calls)291 2063 y(Sc)n(heme)26
b(pro)r(cedure)g Fo(s1)p Fr(.)36 b(Pro)r(cedure)25 b
Fo(s1)h Fr(can)g(safely)g(call)h(the)g(con)n(tin)n(uation)f
Fo(a)p Fr(,)g(b)r(ecause)291 2163 y(that)32 b(is)g(a)g(do)n(wn)n(w)n
(ard)e(use.)50 b(When)33 b Fo(a)e Fr(is)h(called)g(Sc)n(heme)g(48)f
(will)i(remo)n(v)n(e)d(the)i(p)r(ortion)291 2262 y(of)k(the)i(C)e(stac)
n(k)g(used)h(b)n(y)f(the)i(call)e(to)h Fo(c0)p Fr(.)63
b(On)37 b(the)g(other)f(hand,)k(if)j Fo(s1)36 b Fr(captures)g(a)291
2362 y(con)n(tin)n(uation,)e(that)f(con)n(tin)n(uation)g(cannot)f(b)r
(e)i(used)g(from)f Fo(s0)p Fr(,)h(b)r(ecause)f(b)n(y)g(the)g(time)291
2462 y(con)n(trol)21 b(returns)h(to)g Fo(s0)g Fr(the)h(C)g(stac)n(k)e
(used)i(b)n(y)h Fo(c0)d Fr(will)i(no)g(longer)e(b)r(e)i(v)-5
b(alid.)35 b(An)23 b(attempt)291 2561 y(to)31 b(in)n(v)n(ok)n(e)f(an)i
(up)n(w)n(ard)e(con)n(tin)n(uation)h(that)h(is)g(closed)f(o)n(v)n(er)f
(a)h(p)r(ortion)g(of)h(the)g(C)g(stac)n(k)291 2661 y(will)27
b(raise)g(an)g(exception.)415 2760 y(In)22 b(Sc)n(heme)f(48)f(threads)g
(are)h(implemen)n(ted)h(using)e(con)n(tin)n(uations,)i(so)e(the)i(do)n
(wn)n(w)n(ard)291 2860 y(restriction)27 b(applies)g(to)h(them)h(as)e(w)
n(ell.)38 b(An)28 b(attempt)h(to)f(return)g(from)f(Sc)n(heme)h(to)g(C)g
(at)291 2960 y(a)33 b(time)h(when)f(the)h(appropriate)e(C)i(frame)f(is)
g(not)h(on)f(top)g(of)h(the)g(C)f(stac)n(k)g(will)h(cause)291
3059 y(the)c(curren)n(t)g(thread)f(to)i(blo)r(c)n(k)e(un)n(til)i(the)g
(frame)e(is)i(a)n(v)-5 b(ailable.)43 b(F)-7 b(or)30 b(example,)g(supp)r
(ose)291 3159 y(thread)20 b Fo(t0)h Fr(calls)g(a)g(C)g(pro)r(cedure)f
(whic)n(h)h(calls)g(bac)n(k)g(to)g(Sc)n(heme,)h(at)f(whic)n(h)h(p)r
(oin)n(t)f(con)n(trol)291 3259 y(switc)n(hes)f(to)i(thread)f
Fo(t1)p Fr(,)h(whic)n(h)f(also)f(calls)h(C)h(and)f(then)h(bac)n(k)e(to)
i(Sc)n(heme.)34 b(A)n(t)22 b(this)g(p)r(oin)n(t)291 3358
y(b)r(oth)28 b Fo(t0)f Fr(and)g Fo(t1)g Fr(ha)n(v)n(e)g(activ)n(e)g
(calls)g(to)g(C)h(on)g(the)g(C)f(stac)n(k,)g(with)h Fo(t1)p
Fr('s)f(C)h(frame)f(ab)r(o)n(v)n(e)291 3458 y Fo(t0)p
Fr('s.)60 b(If)36 b(thread)f Fo(t0)g Fr(attempts)h(to)f(return)h(from)f
(Sc)n(heme)g(to)h(C)g(it)g(will)g(blo)r(c)n(k,)h(as)e(its)291
3558 y(frame)28 b(is)i(not)f(accessible.)41 b(Once)29
b Fo(t1)f Fr(has)h(returned)g(to)g(C)h(and)f(from)g(there)g(to)g(Sc)n
(heme,)291 3657 y Fo(t0)j Fr(will)h(b)r(e)g(able)g(to)g(resume.)52
b(The)34 b(return)e(to)h(Sc)n(heme)g(is)g(required)f(b)r(ecause)g(con)n
(text)291 3757 y(switc)n(hes)e(can)g(only)g(o)r(ccur)g(while)h(Sc)n
(heme)g(co)r(de)f(is)h(running.)45 b Fo(T0)30 b Fr(will)h(also)f(b)r(e)
h(able)f(to)291 3856 y(resume)d(if)34 b Fo(t1)27 b Fr(uses)g(a)g(con)n
(tin)n(uation)g(to)h(thro)n(w)e(past)i(its)f(call)h(to)f(C.)291
4127 y Fj(8.7)135 b(In)l(teracting)46 b(with)g(the)f(Sc)l(heme)g(heap)
291 4309 y Fr(Sc)n(heme)30 b(48)f(uses)h(a)g(cop)n(ying,)g(precise)g
(garbage)e(collector.)44 b(An)n(y)30 b(pro)r(cedure)f(that)i(allo-)291
4408 y(cates)c(ob)5 b(jects)27 b(within)h(the)g(Sc)n(heme)f(48)g(heap)h
(ma)n(y)e(trigger)g(a)i(garbage)d(collection.)415 4508
y(Lo)r(cal)i(ob)5 b(ject)28 b(references)f(refer)g(to)h(v)-5
b(alues)28 b(in)g(the)h(Sc)n(heme)f(48)f(heap)h(and)g(are)f(auto-)291
4608 y(matically)d(registered)g(with)i(the)g(garbage)d(collector)h(b)n
(y)h(the)g(in)n(terface)g(for)g(the)h(duration)291 4707
y(of)h(a)g(function)h(call)f(from)h(Sc)n(heme)f(to)g(C)h(so)f(that)g
(the)h(v)-5 b(alues)28 b(will)f(b)r(e)h(retained)f(and)h(the)291
4807 y(references)e(will)i(b)r(e)g(up)r(dated)g(if)g(the)g(garbage)d
(collector)i(mo)n(v)n(es)f(the)i(ob)5 b(ject.)415 4907
y(Global)29 b(ob)5 b(ject)29 b(references)e(need)j(to)f(b)r(e)g
(created)f(and)h(freed)g(explicitly)g(for)g(Sc)n(heme)291
5006 y(v)-5 b(alues)37 b(that)i(need)f(to)g(surviv)n(e)f(one)h
(function)h(call,)h(e.g.)69 b(that)38 b(are)f(stored)h(in)g(global)p
Black 1660 5255 a(115)p Black eop end
%%Page: 116 124
TeXDict begin 116 123 bop 0 TeXcolorgray Black Black
Black 739 523 a Fr(v)-5 b(ariables,)26 b(global)g(data)h(structures)f
(or)g(are)g(passed)h(to)g(libraries.)35 b(See)27 b(section)p
0 0 1 TeXcolorrgb 27 w(8.7.1)p Black 26 w(for)739 623
y(details.)863 722 y(Additionally)-7 b(,)26 b(the)f(in)n(terface)f(pro)
n(vides)f Fq(lo)l(c)l(al)28 b(bu\013ers)k Fr(that)25
b(are)f(mallo)r(c'd)g(regions)f(of)739 822 y(memory)18
b(v)-5 b(alid)18 b(for)h(the)g(duration)f(of)g(a)g(function)i(call)e
(and)g(are)g(freed)g(automatically)g(up)r(on)739 922
y(return)36 b(from)f(the)i(external)e(co)r(de.)63 b(This)36
b(reliev)n(es)f(the)h(programmer)e(from)i(explicitly)739
1021 y(freeing)27 b(lo)r(cally)g(allo)r(cated)g(memory)-7
b(.)36 b(See)27 b(section)p 0 0 1 TeXcolorrgb 28 w(8.7.2)p
Black 26 w(for)g(details.)863 1121 y(The)j(in)n(terface)f(treats)h(b)n
(yte)f(v)n(ectors)g(in)h(a)f(sp)r(ecial)h(w)n(a)n(y)-7
b(,)29 b(since)g(the)i(garbage)c(collec-)739 1220 y(tor)e(has)h(no)g
(facilit)n(y)g(for)f(up)r(dating)i(p)r(oin)n(ters)e(to)h(the)h(in)n
(teriors)e(of)h(ob)5 b(jects,)26 b(so)f(that)i(suc)n(h)739
1320 y(p)r(oin)n(ters,)20 b(for)d(example)h(the)h(ones)f(returned)g(b)n
(y)h Fo(s48)p 2389 1320 27 4 v 30 w(unsafe)p 2683 1320
V 29 w(extract)p 3020 1320 V 28 w(byte)p 3224 1320 V
30 w(vector)p 3518 1320 V 29 w(2)p Fr(,)739 1420 y(will)29
b(lik)n(ely)f(b)r(ecome)h(in)n(v)-5 b(alid)28 b(when)h(a)g(garbage)d
(collection)i(o)r(ccurs.)39 b(The)29 b(in)n(terface)f(pro-)739
1519 y(vides)22 b(a)g(facilit)n(y)g(to)h(prev)n(en)n(t)e(a)h(garbage)e
(collection)i(from)g(in)n(v)-5 b(alidating)22 b(p)r(oin)n(ters)g(to)g
(b)n(yte)739 1619 y(v)n(ector's)k(memory)h(region,)f(see)h(section)p
0 0 1 TeXcolorrgb 28 w(8.7.3)p Black 26 w(for)g(details.)739
1848 y Fe(8.7.1)112 b(Registering)38 b(global)g(references)739
2001 y Fr(When)f(external)e(co)r(de)h(needs)g(a)g(reference)g(ob)5
b(ject)36 b(to)g(surviv)n(e)f(the)h(curren)n(t)g(call,)i(the)739
2101 y(external)31 b(co)r(de)i(needs)f(to)g(do)g(explicit)h(b)r(o)r
(okk)n(eeping.)49 b(Lo)r(cal)32 b(references)f(m)n(ust)i(not)f(b)r(e)
739 2200 y(stored)27 b(in)h(global)e(v)-5 b(ariables)26
b(of)i(the)g(external)f(co)r(de)g(or)g(passed)g(to)g(other)g(threads,)g
(since)739 2300 y(all)35 b(lo)r(cal)h(references)e(are)h(freed)g(once)h
(the)g(call)f(returns,)i(whic)n(h)f(leads)f(to)h(a)f(dangling)739
2400 y(p)r(oin)n(ter)h(in)g(the)h(global)e(v)-5 b(ariable)35
b(or)g(other)h(thread)g(resp)r(ectiv)n(ely)-7 b(.)62
b(Instead,)38 b(promote)739 2499 y(a)31 b(lo)r(cal)g(reference)g(to)h
(a)f(global)g(reference)f(and)i(store)f(it)h(in)g(a)f(global)g(v)-5
b(ariable)30 b(or)h(pass)739 2599 y(to)i(another)f(thread)h(as)f
(global)g(references)g(will)i(surviv)n(e)e(the)h(curren)n(t)f(call.)54
b(Since)33 b(the)739 2698 y(foreign-function)g(in)n(terface)g(nev)n(er)
g(automatically)f(frees)h(global)g(references,)h(the)g(pro-)739
2798 y(grammer)26 b(m)n(ust)i(free)f(them)h(at)g(the)g(righ)n(t)e
(time.)p Black 755 2931 a Fn(\017)p Black 42 w Fo(s48)p
976 2931 V 30 w(ref)p 1138 2931 V 30 w(t)41 b(s48)p 1385
2931 V 30 w(make)p 1591 2931 V 30 w(global)p 1885 2931
V 29 w(ref\(s48)p 2222 2931 V 28 w(value)f(obj\))p Black
755 3030 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
3030 V 30 w(free)p 1605 3030 V 30 w(global)p 1899 3030
V 29 w(ref\(s48)p 2236 3030 V 28 w(ref)p 2396 3030 V
30 w(t)41 b(ref\))p Black 755 3130 a Fn(\017)p Black
42 w Fo(s48)p 976 3130 V 30 w(ref)p 1138 3130 V 30 w(t)g(s48)p
1385 3130 V 30 w(local)p 1635 3130 V 29 w(to)p 1752 3130
V 31 w(global)p 2047 3130 V 29 w(ref\(s48)p 2384 3130
V 28 w(ref)p 2544 3130 V 30 w(t)h(ref\))739 3263 y(s48)p
876 3263 V 30 w(make)p 1082 3263 V 30 w(global)p 1376
3263 V 29 w(ref)31 b Fr(p)r(ermanen)n(tly)h(registers)f(the)i(Sc)n
(heme)g(v)-5 b(alue)32 b Fq(obj)46 b Fr(as)32 b(a)g(global)739
3363 y(reference)22 b(with)i(the)g(garbage)d(collector.)35
b(Basic)22 b(Sc)n(heme)h(v)-5 b(alues)23 b(are)p 2968
3363 V 54 w Fo(s48)p 3131 3363 V 30 w(value)p 3381 3363
V 30 w(true)p Fr(,)p 739 3462 V 765 3462 a Fo(s48)p 902
3462 V 30 w(value)p 1152 3462 V 30 w(false)p Fr(,)p 1443
3462 V 49 w Fo(s48)p 1606 3462 V 30 w(value)p 1856 3462
V 30 w(null)p Fr(,)p 2104 3462 V 50 w Fo(s48)p 2267 3462
V 30 w(value)p 2517 3462 V 29 w(unspecific)p Fr(,)p 3026
3462 V 48 w Fo(s48)p 3189 3462 V 30 w(value)p 3439 3462
V 29 w(undefined)p Fr(,)739 3562 y(and)p 906 3562 V 59
w Fo(s48)p 1069 3562 V 30 w(value)p 1319 3562 V 29 w(eof)p
Fr(.)863 3661 y(T)-7 b(o)39 b(free)g(a)g(global)f(reference)g(an)h(to)g
(unregister)f(it)h(with)h(the)g(garbage)c(collector,)739
3761 y(use)26 b Fo(s48)p 1018 3761 V 30 w(free)p 1224
3761 V 29 w(global)p 1517 3761 V 29 w(ref)p Fr(.)35 b(The)26
b(function)h Fo(s48)p 2361 3761 V 30 w(local)p 2611 3761
V 29 w(to)p 2728 3761 V 31 w(global)p 3023 3761 V 28
w(ref)e Fr(promotes)g(a)739 3861 y(lo)r(cal)i(reference)g(ob)5
b(ject)27 b(to)g(a)h(global)e(reference)h(ob)5 b(ject.)863
3960 y(F)-7 b(or)27 b(example,)f(to)h(main)n(tain)f(a)h(global)e(list)i
(of)g(v)-5 b(alues,)27 b(declare)e(a)i(static)g(global)e(v)-5
b(ari-)739 4060 y(able)p Black Black 826 4222 a Fo(s48_ref_t)40
b(global_list)f(=)k(NULL;)739 4384 y Fr(and)27 b(initialize)h(it)g(in)g
(the)g(external)f(co)r(de's)g(initialization)g(function)p
Black Black 826 4545 a Fo(global_list)39 b(=)k(s48_make_global_r)o(ef)o
(\(_s)o(48)o(_va)o(lu)o(e_)o(nul)o(l\))o(;)739 4707 y
Fr(Note)27 b(that)g(y)n(ou)g(need)g(to)g(use)f(a)h(Sc)n(heme)g(v)-5
b(alue)27 b(\(not)g(a)g(reference)f(ob)5 b(ject\))27
b(as)f(the)i(argu-)739 4807 y(men)n(t)h(for)g Fo(s48)p
1216 4807 V 30 w(make)p 1422 4807 V 30 w(global)p 1716
4807 V 29 w(ref)p Fr(,)f(since)h(there)g(is)g(not)h(y)n(et)f(a)f(call)h
(ob)5 b(ject)29 b(at)g(the)h(time)739 4907 y(external)j(co)r(de)h(gets)
g(initialized.)57 b(T)-7 b(o)34 b(add)g Fo(new)p 2311
4907 V 30 w(value)e Fr(to)i(the)h(list,)h(y)n(ou)d(can)h(use)g(the)739
5006 y(follo)n(wing)26 b(snipp)r(et:)p Black 2109 5255
a(116)p Black eop end
%%Page: 117 125
TeXDict begin 117 124 bop 0 TeXcolorgray Black Black
Black Black Black 378 523 a Fo(temp)42 b(=)h(global_list;)378
623 y(global_list)c(=)87 b(s48_local_to_gl)o(oba)o(l_)o(re)o(f\(s)o(48)
o(_co)o(ns)o(_2)o(\(ca)o(ll)o(,)38 b(new_value,)h(global_list\)\))378
722 y(s48_free_global_)o(re)o(f\()o(tem)o(p\))o(;)291
904 y Fr(Y)-7 b(ou)26 b(ha)n(v)n(e)f(to)h(remem)n(b)r(er)g(to)g(alw)n
(a)n(ys)e(promote)i(reference)f(ob)5 b(jects)26 b(to)g(global)f
(references)291 1003 y(when)33 b(assigning)f(to)i(a)f(global)f(v)-5
b(ariable)32 b(\(and)i(later,)g(to)g(free)f(them)h(man)n(ually\).)54
b(Note)291 1103 y(that)27 b(it)h(is)f(more)f(e\016cien)n(t)h(to)g(free)
g(the)h(previous)e(head)h(of)g(the)h(list)f(when)g(adding)g(a)g(new)291
1202 y(elemen)n(t)g(to)h(the)g(list.)291 1435 y Fe(8.7.2)112
b(Lo)s(cal)38 b(bu\013ers)291 1588 y Fr(The)20 b(foreign-function)f(in)
n(terface)g(supp)r(orts)h(the)h(programmer)c(with)k(allo)r(cating)e
(memory)291 1687 y(in)30 b(external)f(co)r(de:)42 b(The)30
b(programmer)d(can)j(request)f(c)n(h)n(unks)h(of)g(memory)-7
b(,)30 b(called)f(lo)r(cal)291 1787 y(bu\013ers,)e(that)h(are)f
(automatically)f(freed)i(on)f(return)g(from)g(the)h(curren)n(t)f(call.)
p Black 307 1935 a Fn(\017)p Black 41 w Fo(void)40 b(*s48)p
787 1935 27 4 v 30 w(make)p 993 1935 V 30 w(local)p 1243
1935 V 29 w(buf)g(\(s48)p 1620 1935 V 30 w(call)p 1826
1935 V 30 w(t,)g(size)p 2160 1935 V 30 w(t\))p Black
307 2035 a Fn(\017)p Black 41 w Fo(void)g(s48)p 743 2035
V 30 w(free)p 949 2035 V 30 w(local)p 1199 2035 V 29
w(buf)h(\(s48)p 1577 2035 V 29 w(call)p 1782 2035 V 30
w(t,)g(void)f(*\))415 2183 y Fr(The)33 b(function)g Fo(s48)p
1058 2183 V 30 w(make)p 1264 2183 V 30 w(local)p 1514
2183 V 29 w(buf)f Fr(returns)g(a)g(blo)r(c)n(k)g(of)h(memory)f(of)h
(the)g(giv)n(en)291 2283 y(size)j(in)h(b)n(ytes.)63 b(This)37
b(memory)f(freed)g(b)n(y)h(the)g(foreign-function)f(in)n(terface)g
(when)h(the)291 2383 y(curren)n(t)26 b(call)i(returns.)36
b(T)-7 b(o)27 b(free)g(the)h(bu\013er)g(man)n(ually)-7
b(,)27 b(use)g Fo(s48)p 2369 2383 V 31 w(free)p 2576
2383 V 29 w(local)p 2825 2383 V 30 w(buf)p Fr(.)291 2615
y Fe(8.7.3)112 b(Sp)s(ecial)39 b(treatmen)m(t)e(for)g(b)m(yte)h(v)m
(ectors)291 2768 y Fr(The)21 b(in)n(terface)g(treats)h(b)n(yte)f(v)n
(ectors)f(in)i(a)g(sp)r(ecial)f(w)n(a)n(y)-7 b(,)22 b(since)f(the)i
(garbage)c(collector)h(has)291 2868 y(no)28 b(facilit)n(y)h(for)f(up)r
(dating)i(p)r(oin)n(ters)e(to)h(the)g(in)n(teriors)e(of)i(ob)5
b(jects,)29 b(so)f(that)h(suc)n(h)g(p)r(oin)n(t-)291
2967 y(ers,)23 b(for)f(example)g(the)i(ones)e(returned)g(b)n(y)i
Fo(s48)p 1782 2967 V 30 w(unsafe)p 2076 2967 V 29 w(extract)p
2413 2967 V 29 w(byte)p 2618 2967 V 29 w(vector)p 2911
2967 V 29 w(2)p Fr(,)g(will)291 3067 y(lik)n(ely)e(b)r(ecome)g(in)n(v)
-5 b(alid)23 b(when)g(a)f(garbage)f(collection)h(o)r(ccurs.)34
b(The)23 b(in)n(terface)f(pro)n(vides)f(a)291 3167 y(facilit)n(y)e(to)h
(prev)n(en)n(t)e(a)i(garbage)d(collection)i(from)g(in)n(v)-5
b(alidating)19 b(p)r(oin)n(ters)g(to)h(b)n(yte)f(v)n(ector's)291
3266 y(memory)29 b(region.)43 b(It)31 b(do)r(es)f(this)g(b)n(y)g(cop)n
(ying)f(b)n(yte)h(v)n(ectors)f(that)h(are)f(used)h(in)h(external)291
3366 y(co)r(de)c(from)g(and)h(to)f(the)h(Sc)n(heme)g(heap.)415
3465 y(These)f(functions)h(create)f(b)n(yte)h(v)n(ectors:)p
Black 307 3614 a Fn(\017)p Black 41 w Fo(s48)p 527 3614
V 30 w(ref)p 689 3614 V 30 w(t)42 b(s48)p 937 3614 V
30 w(make)p 1143 3614 V 29 w(byte)p 1348 3614 V 30 w(vector)p
1642 3614 V 29 w(2\(s48)p 1891 3614 V 29 w(call)p 2096
3614 V 30 w(t,)f(long\))315 b Fr(\(ma)n(y)27 b(GC\))p
Black 307 3713 a Fn(\017)p Black 41 w Fo(s48)p 527 3713
V 30 w(ref)p 689 3713 V 30 w(t)42 b(s48)p 937 3713 V
30 w(make)p 1143 3713 V 29 w(unmovable)p 1568 3713 V
28 w(byte)p 1772 3713 V 30 w(vector)p 2066 3713 V 29
w(2\(s48)p 2315 3713 V 29 w(call)p 2520 3713 V 30 w(t,)e(long\))2785
3813 y Fr(\(ma)n(y)27 b(GC\))p Black 307 3913 a Fn(\017)p
Black 41 w Fo(s48)p 527 3913 V 30 w(ref)p 689 3913 V
30 w(t)42 b(s48)p 937 3913 V 30 w(enter)p 1187 3913 V
29 w(byte)p 1392 3913 V 30 w(vector)p 1686 3913 V 29
w(2\(s48)p 1935 3913 V 29 w(call)p 2140 3913 V 30 w(t,)e(const)g(char)g
(*,)g(long\))2785 4012 y Fr(\(ma)n(y)27 b(GC\))p Black
307 4112 a Fn(\017)p Black 41 w Fo(s48)p 527 4112 V 30
w(ref)p 689 4112 V 30 w(t)42 b(s48)p 937 4112 V 30 w(enter)p
1187 4112 V 29 w(unmovable)p 1612 4112 V 28 w(byte)p
1816 4112 V 29 w(vector)p 2109 4112 V 29 w(2\(s48)p 2358
4112 V 30 w(call)p 2564 4112 V 29 w(t,)f(const)e(char)h(*,)h(long\))
2785 4211 y Fr(\(ma)n(y)27 b(GC\))415 4360 y Fo(s48)p
552 4360 V 30 w(make)p 758 4360 V 30 w(byte)p 964 4360
V 30 w(vector)p 1258 4360 V 29 w(2)18 b Fr(creates)f(a)h(b)n(yte)g(v)n
(ector)f(of)h(giv)n(en)g(size,)i Fo(s48)p 2690 4360 V
30 w(make)p 2896 4360 V 30 w(unmovable)p 3322 4360 V
28 w(byte)p 3526 4360 V 29 w(vector)p 3819 4360 V 29
w(2)291 4459 y Fr(creates)j(a)g(b)n(yte)h(v)n(ector)f(in)i(that)f(is)g
(not)g(mo)n(v)n(ed)g(b)n(y)f(the)i(garbage)d(collector)h(\(only)h(the)g
(Bi-)291 4559 y(b)r(op)k(garbage)f(collector)g(supp)r(orts)i(this\).)40
b(The)29 b(functions)g Fo(s48)p 2338 4559 V 30 w(enter)p
2588 4559 V 30 w(byte)p 2794 4559 V 29 w(vector)p 3087
4559 V 29 w(2)291 4659 y Fr(and)e Fo(s48)p 589 4659 V
30 w(enter)p 839 4659 V 29 w(unmovable)p 1264 4659 V
28 w(byte)p 1468 4659 V 30 w(vector)p 1762 4659 V 29
w(2)g Fr(create)g(and)g(initialize)h(b)n(yte)f(v)n(ectors.)415
4758 y(The)h(follo)n(wing)e(functions)i(cop)n(y)f(b)n(yte)g(v)n(ectors)
f(from)i(and)f(to)h(the)g(Sc)n(heme)f(heap:)p Black 307
4907 a Fn(\017)p Black 41 w Fo(void)40 b(s48)p 743 4907
V 30 w(extract)p 1081 4907 V 29 w(byte)p 1286 4907 V
29 w(vector)p 1579 4907 V 29 w(region)p 1872 4907 V 29
w(2\(s48)p 2121 4907 V 30 w(call)p 2327 4907 V 29 w(t,)h(s48)p
2617 4907 V 30 w(ref)p 2779 4907 V 30 w(t,)g(long,)e(long,)h(char*\))p
Black 307 5006 a Fn(\017)p Black 41 w Fo(void)g(s48)p
743 5006 V 30 w(enter)p 993 5006 V 30 w(byte)p 1199 5006
V 29 w(vector)p 1492 5006 V 29 w(region)p 1785 5006 V
29 w(2\(s48)p 2034 5006 V 29 w(call)p 2239 5006 V 30
w(t,)h(s48)p 2530 5006 V 30 w(ref)p 2692 5006 V 30 w(t,)g(long,)e
(long,)h(char*\))p Black 1660 5255 a Fr(117)p Black eop
end
%%Page: 118 126
TeXDict begin 118 125 bop 0 TeXcolorgray Black Black
Black Black 755 523 a Fn(\017)p Black 42 w Fo(void)39
b(s48)p 1191 523 27 4 v 31 w(copy)p 1398 523 V 29 w(from)p
1603 523 V 30 w(byte)p 1809 523 V 30 w(vector)p 2103
523 V 29 w(2\(s48)p 2352 523 V 29 w(call)p 2557 523 V
30 w(t,)h(s48)p 2847 523 V 30 w(ref)p 3009 523 V 31 w(t,)g(char)g(*\))p
Black 755 623 a Fn(\017)p Black 42 w Fo(void)f(s48)p
1191 623 V 31 w(copy)p 1398 623 V 29 w(to)p 1515 623
V 31 w(byte)p 1722 623 V 30 w(vector)p 2016 623 V 28
w(2\(s48)p 2264 623 V 30 w(call)p 2470 623 V 29 w(t,)i(s48)p
2760 623 V 30 w(ref)p 2922 623 V 30 w(t,)g(char)f(*\))863
749 y(s48)p 1000 749 V 31 w(extract)p 1339 749 V 28 w(byte)p
1543 749 V 30 w(vector)p 1837 749 V 29 w(region)p 2130
749 V 29 w(2)33 b Fr(copies)g(a)g(giv)n(en)g(section)g(from)g(the)h
(giv)n(en)739 849 y(b)n(yte)d(v)n(ector)e(to)i(its)g(last)g(argumen)n
(t,)f Fo(s48)p 2099 849 V 30 w(enter)p 2349 849 V 30
w(byte)p 2555 849 V 29 w(vector)p 2848 849 V 29 w(region)p
3141 849 V 29 w(2)h Fr(copies)f(the)739 949 y(con)n(ten)n(ts)18
b(of)g(its)g(last)h(argumen)n(t)e(to)h(its)h(\014rst)f(argumen)n(t)f
(to)h(the)h(giv)n(en)f(index.)34 b Fo(s48)p 3307 949
V 30 w(copy)p 3513 949 V 29 w(from)p 3718 949 V 30 w(byte)p
3924 949 V 30 w(vector)p 4218 949 V 29 w(2)739 1048 y
Fr(copies)28 b(the)h(whole)f(b)n(yte)h(v)n(ector)e(to)i(its)f(last)h
(argumen)n(t,)f Fo(s48)p 2712 1048 V 30 w(copy)p 2918
1048 V 29 w(to)p 3035 1048 V 31 w(byte)p 3242 1048 V
30 w(vector)p 3536 1048 V 29 w(2)739 1148 y Fr(copies)f(the)h(con)n
(ten)n(ts)f(of)g(its)h(last)f(argumen)n(t)g(to)g(the)h(b)n(yte)g(v)n
(ector.)p Black 755 1274 a Fn(\017)p Black 42 w Fo(char)39
b(*s48)p 1235 1274 V 30 w(extract)p 1573 1274 V 29 w(byte)p
1778 1274 V 29 w(vector)p 2071 1274 V 29 w(unmanaged)p
2496 1274 V 28 w(2\(s48)p 2744 1274 V 29 w(call)p 2949
1274 V 30 w(t,)i(s48)p 3240 1274 V 30 w(ref)p 3402 1274
V 30 w(t\))p Black 755 1374 a Fn(\017)p Black 42 w Fo(void)81
b(s48)p 1233 1374 V 30 w(release)p 1571 1374 V 29 w(byte)p
1776 1374 V 29 w(vector)p 2069 1374 V 29 w(2\(s48)p 2318
1374 V 29 w(call)p 2523 1374 V 30 w(t,)41 b(s48)p 2814
1374 V 30 w(ref)p 2976 1374 V 30 w(t,)g(char*\))863 1501
y(s48)p 1000 1501 V 31 w(extract)p 1339 1501 V 28 w(byte)p
1543 1501 V 30 w(vector)p 1837 1501 V 29 w(unmanaged)p
2262 1501 V 27 w(2)31 b Fr(returns)f(a)g(lo)r(cal)g(bu\013er)h(that)g
(is)f(v)-5 b(alid)739 1600 y(during)24 b(the)h(curren)n(t)e(external)h
(call)g(and)g(copies)g(the)h(con)n(ten)n(ts)e(of)i(the)g(giv)n(en)e(b)n
(yte)i(v)n(ector)739 1700 y(to)j(the)g(returned)g(bu\013er.)39
b(The)28 b(returned)f(b)n(yte)h(v)n(ector)f(ma)n(y)g(b)r(e)i(a)f(cop)n
(y)f(of)h(the)g(Sc)n(heme)739 1800 y(b)n(yte)k(v)n(ector,)h(c)n(hanges)
e(made)h(to)g(the)h(returned)f(b)n(yte)h(v)n(ector)e(will)i(not)f
(necessarily)f(b)r(e)739 1899 y(re\015ected)c(in)h(Sc)n(heme)g(un)n
(til)g Fo(s48)p 1799 1899 V 30 w(release)p 2137 1899
V 28 w(byte)p 2341 1899 V 30 w(vector)p 2635 1899 V 29
w(2)f Fr(is)h(called.)863 1999 y(The)i(follo)n(wing)e(functions)i(to)f
(access)f(b)n(yte)i(v)n(ectors)e(come)h(with)g(the)h(most)f(supp)r(ort)
739 2098 y(from)36 b(the)h(foreign-function)f(in)n(terface.)62
b(Byte)37 b(v)n(ectors)e(that)i(are)e(accessed)g(via)h(these)739
2198 y(functions)e(are)g(automatically)f(managed)g(b)n(y)h(the)g(in)n
(terface)g(and)g(are)f(copied)h(bac)n(k)f(to)739 2298
y(Sc)n(heme)27 b(on)h(return)f(from)g(the)h(curren)n(t)f(call:)p
Black 755 2424 a Fn(\017)p Black 42 w Fo(char)39 b(*s48)p
1235 2424 V 30 w(extract)p 1573 2424 V 29 w(byte)p 1778
2424 V 29 w(vector)p 2071 2424 V 29 w(2\(s48)p 2320 2424
V 30 w(call)p 2526 2424 V 29 w(t,)i(s48)p 2816 2424 V
30 w(ref)p 2978 2424 V 30 w(t\))p Black 755 2524 a Fn(\017)p
Black 42 w Fo(char)e(*s48)p 1235 2524 V 30 w(extract)p
1573 2524 V 29 w(byte)p 1778 2524 V 29 w(vector)p 2071
2524 V 29 w(readonly)p 2452 2524 V 28 w(2\(s48)p 2700
2524 V 30 w(call)p 2906 2524 V 29 w(t,)i(s48)p 3196 2524
V 30 w(ref)p 3358 2524 V 30 w(t\))863 2651 y(s48)p 1000
2651 V 31 w(extract)p 1339 2651 V 28 w(byte)p 1543 2651
V 30 w(vector)p 1837 2651 V 29 w(2)24 b Fr(extracts)g(a)g(b)n(yte)h(v)n
(ector)e(from)i(Sc)n(heme)f(b)n(y)h(making)739 2750 y(a)18
b(cop)n(y)g(of)h(the)g(b)n(yte)g(v)n(ectors)e(con)n(ten)n(ts)h(and)h
(returning)f(a)g(p)r(oin)n(ter)g(to)h(that)g(cop)n(y)-7
b(.)33 b(Changes)739 2850 y(to)27 b(the)h(b)n(yte)g(v)n(ector)e(are)h
(automatically)f(copied)h(bac)n(k)g(to)g(the)h(Sc)n(heme)g(heap)f(when)
h(the)739 2949 y(function)40 b(returns,)i(external)d(co)r(de)h(raises)e
(an)i(exception,)i(or)d(external)g(co)r(de)h(calls)f(a)739
3049 y(Sc)n(heme)g(function.)74 b Fo(s48)p 1579 3049
V 30 w(extract)p 1917 3049 V 28 w(byte)p 2121 3049 V
30 w(vector)p 2415 3049 V 29 w(readonly)p 2796 3049 V
28 w(2)39 b Fr(should)g(b)r(e)h(used)g(for)739 3149 y(b)n(yte)23
b(v)n(ectors)f(that)i(are)f(not)g(mo)r(di\014ed)h(b)n(y)g(external)e
(co)r(de,)j(since)e(these)h(b)n(yte)f(v)n(ectors)f(are)739
3248 y(not)27 b(copied)h(bac)n(k)f(to)g(Sc)n(heme.)739
3476 y Fe(8.7.4)112 b(Memory)39 b(o)m(v)m(erhead)739
3629 y Fr(Eac)n(h)27 b(reference)g(ob)5 b(ject)27 b(consumes)h(a)f
(certain)g(amoun)n(t)h(of)g(memory)f(itself,)h(in)g(addition)739
3729 y(to)k(the)h(memory)e(tak)n(en)h(b)n(y)g(the)h(referred)e(Sc)n
(heme)h(ob)5 b(ject)33 b(itself.)51 b(Ev)n(en)32 b(though)g(lo)r(cal)
739 3828 y(references)22 b(are)g(ev)n(en)n(tually)h(freed)g(on)g
(return)g(of)g(an)h(external)e(call,)i(there)f(are)f(some)h(situ-)739
3928 y(ations)j(where)g(it)h(is)f(desirable)g(to)g(free)g(lo)r(cal)g
(references)g(explicitly)-7 b(,)27 b(since)f(w)n(aiting)g(un)n(til)739
4028 y(the)31 b(call)e(returns)h(ma)n(y)g(b)r(e)g(to)r(o)g(long)g(or)f
(nev)n(er)g(happ)r(en,)j(whic)n(h)e(could)g(k)n(eep)g(unneeded)739
4127 y(ob)5 b(jects)27 b(liv)n(e:)p Black 863 4281 a
Fn(\017)p Black 41 w Fr(External)34 b(co)r(de)g(ma)n(y)g(create)g(a)g
(large)f(n)n(um)n(b)r(er)i(of)f(lo)r(cal)g(references)g(in)h(a)f
(single)946 4381 y(external)22 b(call.)35 b(An)23 b(example)f(is)h(the)
g(tra)n(v)n(ersal)d(of)i(a)h(list:)34 b(Eac)n(h)22 b(call)g(from)g
(external)946 4481 y(co)r(de)40 b(to)g(the)h(functions)f(that)h
(corresp)r(ond)d(to)i Fo(car)f Fr(and)h Fo(cdr)f Fr(returns)h(a)g
(fresh)946 4580 y(lo)r(cal)31 b(reference.)48 b(T)-7
b(o)32 b(a)n(v)n(oid)e(the)i(consumption)f(of)h(storage)d(for)i(lo)r
(cal)g(references)946 4680 y(prop)r(ortional)20 b(to)h(the)h(length)f
(of)h(the)f(list,)i(the)f(tra)n(v)n(ersal)c(m)n(ust)k(free)f(the)h
(no-longer-)946 4779 y(needed)28 b(references)f(as)g(it)h(go)r(es.)946
4907 y(F)-7 b(or)34 b(example,)h(this)f(is)f(a)h(straigh)n(tforw)n(ard)
c(de\014nition)35 b(of)e(an)h(external)f(function)946
5006 y(that)28 b(calculates)f(the)h(length)g(of)f(a)g(list:)p
Black 2109 5255 a(118)p Black eop end
%%Page: 119 127
TeXDict begin 119 126 bop 0 TeXcolorgray Black Black
Black Black Black 585 523 a Fo(s48_ref_t)585 623 y(s48_length_2\(s48_)o
(ca)o(ll_)o(t)37 b(call,)42 b(s48_ref_t)e(list\))585
722 y({)672 822 y(long)i(i)i(=)f(0;)672 922 y(while)f
(\(!\(s48_null_p_2\()o(cal)o(l,)37 b(list\)\)\))760 1021
y({)847 1121 y(list)42 b(=)h(s48_cdr_2\(call,)37 b(list\);)847
1220 y(++i;)760 1320 y(})672 1420 y(return)42 b(s48_unsafe_ente)o(r_l)o
(on)o(g_)o(as_)o(fi)o(xnu)o(m_)o(2\(c)o(al)o(l,)37 b(i\);)585
1519 y(})498 1771 y Fr(In)32 b(this)g(implemen)n(tation,)h(eac)n(h)e
(iteration)g(step)g(creates)g(a)g(new)h(lo)r(cal)f(reference)498
1870 y(ob)5 b(ject)34 b(via)f Fo(s48)p 1035 1870 27 4
v 30 w(cdr)p 1197 1870 V 30 w(2)h Fr(that)g(is)g(actually)f(only)h
(needed)g(for)f(the)h(next)h(iteration)498 1970 y(step.)76
b(As)40 b(a)h(result,)i(this)e(function)g(creates)e(new)i(lo)r(cal)f
(references)f(for)h(ev)n(ery)498 2070 y(elemen)n(t)25
b(of)f(the)h(list.)36 b(The)25 b(lo)r(cal)f(references)f(are)h(liv)n(e)
g(during)g(the)h(en)n(tire)f(function)498 2169 y(call.)498
2316 y(T)-7 b(o)32 b(a)n(v)n(oid)e(consuming)h(storage)f(prop)r
(ortional)g(to)i(the)g(length)g(of)g(the)g(list)g(for)f(all)498
2416 y(those)22 b(lo)r(cal)g(reference)g(ob)5 b(jects,)23
b(the)g(impro)n(v)n(ed)f(v)n(ersion)f(cleans)h(up)h(the)g(unneeded)498
2516 y(lo)r(cal)k(reference)g(on)g(ev)n(ery)f(iteration)h(step:)p
Black Black 585 2767 a Fo(s48_ref_t)585 2867 y(s48_length_2\(s48_)o(ca)
o(ll_)o(t)37 b(call,)42 b(s48_ref_t)e(list\))585 2966
y({)672 3066 y(s48_ref_t)g(l)k(=)f(s48_copy_local_)o(ref)o(\(c)o(all)o
(,)37 b(list\);)672 3166 y(long)42 b(i)i(=)f(0;)672 3265
y(while)f(\(!\(s48_null_p_2\()o(cal)o(l,)37 b(l\)\)\))760
3365 y({)847 3464 y(s48_ref_t)j(temp)i(=)h(l;)847 3564
y(l)g(=)g(s48_cdr_2\(call,)38 b(l\);)847 3664 y(s48_free_local_r)o(ef)o
(\(ca)o(ll)o(,)f(temp\);)847 3763 y(++i;)760 3863 y(})672
3963 y(return)42 b(s48_unsafe_ente)o(r_l)o(on)o(g_)o(as_)o(fi)o(xnu)o
(m_)o(2\(c)o(al)o(l,)37 b(i\);)585 4062 y(})498 4314
y Fr(Note)f(that)h(without)g(the)f(call)g(to)g Fo(s48)p
1773 4314 V 30 w(copy)p 1979 4314 V 30 w(local)p 2229
4314 V 29 w(ref)f Fr(the)i(reference)e(to)i(the)498 4413
y(head)c(of)h(the)f(list)h(w)n(ould)f(b)r(e)h(freed)f(along)f(with)i
(all)f(the)h(temp)r(orary)e(references.)498 4513 y(This)18
b(w)n(ould)g(render)g(the)h(whole)f(list)g(un)n(usable)g(after)g(the)h
(return)f(from)g Fo(s48)p 2875 4513 V 30 w(length)p 3169
4513 V 29 w(2)p Fr(.)p Black 415 4707 a Fn(\017)p Black
41 w Fr(The)26 b(external)e(call)h(do)r(es)g(not)h(return)e(at)i(all.)
36 b(If)25 b(the)h(external)f(function)h(en)n(ters)e(an)498
4807 y(in\014nite)f(ev)n(en)n(t)f(dispatc)n(h)g(lo)r(op,)h(for)f
(example,)h(it)g(is)f(crucial)g(that)h(the)f(programmer)498
4907 y(releases)28 b(lo)r(cal)h(references)g(man)n(ually)f(that)i(he)g
(created)f(inside)g(the)h(lo)r(op)g(so)f(that)498 5006
y(they)f(do)f(not)h(accum)n(ulate)f(inde\014nitely)h(and)f(lead)h(to)f
(a)g(memory)g(leak.)p Black 1660 5255 a(119)p Black eop
end
%%Page: 120 128
TeXDict begin 120 127 bop 0 TeXcolorgray Black Black
Black Black 863 523 a Fn(\017)p Black 41 w Fr(External)27
b(co)r(de)h(ma)n(y)f(hold)g(a)h(lo)r(cal)f(reference)g(to)g(a)h(large)e
(Sc)n(heme)i(ob)5 b(ject.)37 b(After)946 623 y(the)31
b(external)e(co)r(de)h(is)h(done)e(w)n(orking)g(on)h(this)g(ob)5
b(ject,)31 b(it)g(p)r(erforms)e(some)h(addi-)946 722
y(tional)h(computation)f(b)r(efore)g(returning)g(to)g(the)h(caller.)45
b(The)31 b(lo)r(cal)f(reference)f(to)946 822 y(the)24
b(large)e(ob)5 b(ject)23 b(prev)n(en)n(ts)f(the)i(ob)5
b(ject)23 b(from)g(b)r(eing)g(garbage)e(collected)i(un)n(til)h(the)946
922 y(external)i(function)h(returns,)f(ev)n(en)h(if)g(the)g(ob)5
b(ject)26 b(is)g(no)h(longer)e(in)i(use)f(for)g(the)h(re-)946
1021 y(mainder)h(of)g(the)h(computation.)38 b(It)29 b(is)f(more)f
(space-e\016cien)n(t)g(if)i(the)g(programmer)946 1121
y(frees)h(the)h(lo)r(cal)e(reference)g(when)i(the)f(external)g
(function)g(do)r(es)g(not)g(need)g(it)h(an)n(y)946 1220
y(longer)c(and)g(will)h(not)g(return)f(for)g(quite)h(some)f(time.)p
Black 863 1384 a Fn(\017)p Black 41 w Fr(There)i(are)g(common)f
(situations)h(where)g(lo)r(cal)g(references)f(are)g(created)h(solely)f
(to)946 1484 y(b)r(e)34 b(passed)f(to)h(another)e(function)i(and)g
(afterw)n(ards)e(nev)n(er)g(used)i(again.)53 b(In)34
b(this)946 1583 y(case,)27 b(the)h(called)f(function)i(can)e(free)g
(the)h(lo)r(cal)f(references)g(of)g(the)h(argumen)n(ts.)p
Black 863 1747 a Fn(\017)p Black 41 w Fr(T)-7 b(o)29
b(impro)n(v)n(e)e(memory)g(usage)h(while)g(making)g(sub)r(calls)g(from)
g(external)g(calls,)g(the)946 1847 y(foreign-function)c(in)n(terface)h
(pro)n(vides)e(functionalit)n(y)i(to)f(create)g(a)h(new)f(\(sub-\)call)
946 1946 y(ob)5 b(ject)26 b(and)g(clean)g(the)h(lo)r(cal)e(references)g
(that)i(are)e(created)g(during)h(that)g(sub)r(call:)p
Black 963 2093 a Fn(\017)p Black 41 w Fo(s48)p 1183 2093
27 4 v 30 w(call)p 1389 2093 V 30 w(t)41 b(s48)p 1636
2093 V 30 w(make)p 1842 2093 V 30 w(subcall\(s48)p 2356
2093 V 27 w(call)p 2559 2093 V 29 w(t)h(call\))p Black
963 2193 a Fn(\017)p Black 41 w Fo(void)e(s48)p 1399
2193 V 30 w(free)p 1605 2193 V 30 w(subcall\(s48)p 2119
2193 V 27 w(call)p 2322 2193 V 29 w(t)h(subcall\))p Black
963 2292 a Fn(\017)p Black 41 w Fo(s48)p 1183 2292 V
30 w(ref)p 1345 2292 V 30 w(t)g(s48)p 1592 2292 V 31
w(finish)p 1887 2292 V 28 w(subcall\(s48)p 2399 2292
V 27 w(call)p 2602 2292 V 30 w(t)g(call,)f(s48)p 3109
2292 V 30 w(call)p 3315 2292 V 29 w(t)i(subcall,)c(s48)p
3952 2292 V 30 w(ref)p 4114 2292 V 30 w(t)j(ref\))946
2439 y(s48)p 1083 2439 V 31 w(make)p 1290 2439 V 29 w(subcall)29
b Fr(returns)i(a)g(new)g(call)h(ob)5 b(ject)31 b(that)h(represen)n(ts)e
(a)h(sub)r(call)g(of)946 2539 y(the)j(curren)n(t)e(call)h(and)g(can)f
(b)r(e)i(passed)e(as)g(the)i(call)e(argumen)n(t)g(to)h(an)n(y)g(sub)r
(calls)946 2639 y(of)39 b(the)g(curren)n(t)f(call.)69
b(Up)r(on)39 b(return)f(of)h(a)f(sub)r(call,)j Fo(s48)p
2864 2639 V 30 w(free)p 3070 2639 V 30 w(subcall)36 b
Fr(frees)946 2738 y(the)e(sub)r(call)f(and)f(all)h(the)g(lo)r(cal)g
(references)e(asso)r(ciated)h(with)h(it.)54 b(The)33
b(function)946 2838 y(s48)p 1068 2838 25 4 v 29 w(\014nish)p
1291 2838 V 30 w(sub)r(call)27 b(also)e(frees)i(the)g(sub)r(call)f(and)
h(all)f(the)h(lo)r(cal)f(references)g(asso)r(ci-)946
2938 y(ated)31 b(with)f(it,)i(but)f(copies)e(its)i(third)f(argumen)n(t)
g(to)g(the)h(curren)n(t)e(call,)i(so)e(that)i(it)946
3037 y(surviv)n(es)c(the)h(sub)r(call.)739 3269 y Fe(8.7.5)112
b(Keeping)38 b(C)g(data)g(structures)f(in)h(the)f(Sc)m(heme)h(heap)739
3422 y Fr(C)32 b(data)g(structures)f(can)h(b)r(e)g(k)n(ept)g(in)g(the)h
(Sc)n(heme)f(heap)g(b)n(y)f(em)n(b)r(edding)i(them)f(inside)739
3521 y(b)n(yte)27 b(v)n(ectors.)35 b(The)26 b(follo)n(wing)g(macros)f
(can)h(b)r(e)i(used)e(to)h(create)f(and)g(access)g(em)n(b)r(edded)739
3621 y(C)i(ob)5 b(jects.)p Black 755 3766 a Fn(\017)p
Black 42 w Fo(s48)p 976 3766 27 4 v 30 w(ref)p 1138 3766
V 30 w(t)41 b(s48)p 1385 3766 V 30 w(make)p 1591 3766
V 30 w(value)p 1841 3766 V 29 w(2\(s48)p 2090 3766 V
29 w(call)p 2295 3766 V 30 w(t,)g(type\))565 b Fr(\(ma)n(y)27
b(GC\))p Black 755 3865 a Fn(\017)p Black 42 w Fo(s48)p
976 3865 V 30 w(ref)p 1138 3865 V 30 w(t)41 b(s48)p 1385
3865 V 30 w(make)p 1591 3865 V 30 w(sized)p 1841 3865
V 29 w(value)p 2090 3865 V 29 w(2\(s48)p 2339 3865 V
30 w(call)p 2545 3865 V 29 w(t,)g(size\))316 b Fr(\(ma)n(y)27
b(GC\))p Black 755 3965 a Fn(\017)p Black 42 w Fo(type)247
b(s48)p 1399 3965 V 30 w(extract)p 1737 3965 V 29 w(value)p
1986 3965 V 29 w(2\(s48)p 2235 3965 V 29 w(call)p 2440
3965 V 30 w(t,)41 b(s48)p 2731 3965 V 30 w(ref)p 2893
3965 V 30 w(t,)g(type\))p Black 755 4065 a Fn(\017)p
Black 42 w Fo(long)247 b(s48)p 1399 4065 V 30 w(value)p
1649 4065 V 29 w(size)p 1854 4065 V 30 w(2\(s48)p 2104
4065 V 29 w(call)p 2309 4065 V 30 w(t,)41 b(s48)p 2600
4065 V 30 w(ref)p 2762 4065 V 30 w(t\))p Black 755 4164
a Fn(\017)p Black 42 w Fo(type)e(*)166 b(s48)p 1401 4164
V 30 w(extract)p 1739 4164 V 29 w(value)p 1988 4164 V
29 w(pointer)p 2325 4164 V 28 w(2\(s48)p 2573 4164 V
30 w(call)p 2779 4164 V 29 w(t,)41 b(s48)p 3069 4164
V 30 w(ref)p 3231 4164 V 30 w(t,)g(type\))p Black 755
4264 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
4264 V 30 w(set)p 1561 4264 V 30 w(value)p 1811 4264
V 30 w(2\(s48)p 2061 4264 V 29 w(call)p 2266 4264 V 30
w(t,)40 b(s48)p 2556 4264 V 30 w(ref)p 2718 4264 V 31
w(t,)g(type,)g(value\))770 4408 y(s48)p 907 4408 V 30
w(make)p 1113 4408 V 29 w(value)p 1362 4408 V 30 w(2)30
b Fr(mak)n(es)g(a)g(b)n(yte)g(v)n(ector)g(large)f(enough)h(to)h(hold)f
(an)g(ob)5 b(ject)31 b(whose)739 4508 y(t)n(yp)r(e)22
b(is)h Fq(typ)l(e)6 b Fr(.)35 b Fo(s48)p 1344 4508 V
31 w(make)p 1551 4508 V 29 w(sized)p 1800 4508 V 30 w(value)p
2050 4508 V 29 w(2)22 b Fr(mak)n(es)f(a)h(b)n(yte)g(v)n(ector)f(large)g
(enough)h(to)g(hold)739 4608 y(an)e(ob)5 b(ject)19 b(of)27
b Fq(size)f Fr(b)n(ytes.)34 b Fo(s48)p 1725 4608 V 31
w(extract)p 2064 4608 V 28 w(value)p 2312 4608 V 29 w(2)20
b Fr(returns)f(the)i(con)n(ten)n(ts)e(of)h(a)f(b)n(yte)h(v)n(ec-)739
4707 y(tor)e(cast)g(to)g Fq(typ)l(e)6 b Fr(,)21 b Fo(s48)p
1449 4707 V 30 w(value)p 1699 4707 V 29 w(size)p 1904
4707 V 30 w(2)d Fr(returns)g(its)g(size,)i(and)e Fo(s48)p
2837 4707 V 30 w(extract)p 3175 4707 V 29 w(value)p 3424
4707 V 29 w(pointer)p 3761 4707 V 29 w(2)739 4807 y Fr(returns)36
b(a)g(p)r(oin)n(ter)g(to)h(the)g(con)n(ten)n(ts)f(of)h(the)g(b)n(yte)f
(v)n(ector.)63 b(The)37 b(v)-5 b(alue)36 b(returned)h(b)n(y)739
4907 y Fo(s48)p 876 4907 V 30 w(extract)p 1214 4907 V
29 w(value)p 1463 4907 V 29 w(pointer)p 1800 4907 V 28
w(2)c Fr(is)g(v)-5 b(alid)33 b(only)f(un)n(til)i(the)f(next)g(garbage)e
(collection.)739 5006 y Fo(s48)p 876 5006 V 30 w(set)p
1038 5006 V 30 w(value)p 1288 5006 V 29 w(2)d Fr(stores)e
Fo(value)g Fr(in)n(to)h(the)h(b)n(yte)g(v)n(ector.)p
Black 2109 5255 a(120)p Black eop end
%%Page: 121 129
TeXDict begin 121 128 bop 0 TeXcolorgray Black Black
Black 415 523 a Fr(P)n(oin)n(ters)26 b(to)h(C)h(data)f(structures)g
(can)g(b)r(e)h(stored)f(in)h(the)g(Sc)n(heme)f(heap:)p
Black 307 665 a Fn(\017)p Black 41 w Fo(s48)p 527 665
27 4 v 30 w(ref)p 689 665 V 30 w(t)42 b(s48)p 937 665
V 30 w(enter)p 1187 665 V 29 w(pointer)p 1524 665 V 29
w(2\(s48)p 1773 665 V 29 w(call)p 1978 665 V 30 w(t,)e(void)g(*\))350
b Fr(\(ma)n(y)27 b(GC\))p Black 307 765 a Fn(\017)p Black
41 w Fo(void)40 b(*)166 b(s48)p 953 765 V 30 w(extract)p
1291 765 V 28 w(pointer)p 1627 765 V 29 w(2\(s48)p 1876
765 V 29 w(call)p 2081 765 V 30 w(t,)41 b(s48)p 2372
765 V 30 w(ref)p 2534 765 V 30 w(t\))138 b Fr(\(ma)n(y)27
b(GC\))291 908 y(The)32 b(function)h Fo(s48)p 933 908
V 30 w(enter)p 1183 908 V 30 w(pointer)p 1521 908 V 28
w(2)f Fr(mak)n(es)g(a)g(b)n(yte)g(v)n(ector)g(large)f(enough)h(to)g
(hold)291 1007 y(the)c(p)r(oin)n(ter)f(v)-5 b(alue)28
b(and)g(stores)f(the)h(p)r(oin)n(ter)g(v)-5 b(alue)27
b(in)i(the)f(b)n(yte)g(v)n(ector.)36 b(The)28 b(function)291
1107 y Fo(s48)p 428 1107 V 30 w(extract)p 766 1107 V
28 w(pointer)p 1102 1107 V 29 w(2)f Fr(extracts)g(the)h(p)r(oin)n(ter)f
(v)-5 b(alue)27 b(from)g(the)h(sc)n(heme)g(heap.)291
1338 y Fe(8.7.6)112 b(C)37 b(co)s(de)h(and)g(heap)h(images)291
1491 y Fr(Sc)n(heme)31 b(48)g(uses)h(dump)r(ed)h(heap)e(images)g(to)h
(restore)e(a)i(previous)f(system)g(state.)50 b(The)291
1591 y(Sc)n(heme)29 b(48)f(heap)g(is)h(written)h(in)n(to)f(a)f(\014le)h
(in)h(a)e(mac)n(hine-indep)r(enden)n(t)h(and)g(op)r(erating-)291
1690 y(system-indep)r(enden)n(t)34 b(format.)55 b(The)33
b(pro)r(cedures)g(describ)r(ed)h(ab)r(o)n(v)n(e)e(ma)n(y)h(b)r(e)h
(used)g(to)291 1790 y(create)26 b(ob)5 b(jects)27 b(in)h(the)g(Sc)n
(heme)g(heap)f(that)h(con)n(tain)f(information)g(sp)r(eci\014c)h(to)g
(the)g(cur-)291 1889 y(ren)n(t)39 b(mac)n(hine,)k(op)r(erating)d
(system,)j(or)c(pro)r(cess.)74 b(A)41 b(heap)f(image)f(con)n(taining)g
(suc)n(h)291 1989 y(ob)5 b(jects)27 b(ma)n(y)g(not)g(w)n(ork)f
(correctly)g(when)i(resumed.)415 2089 y(T)-7 b(o)26 b(address)f(this)h
(problem,)g(a)g(record)e(t)n(yp)r(e)j(ma)n(y)e(b)r(e)i(giv)n(en)e(a)h
(`resumer')f(pro)r(cedure.)291 2188 y(On)k(startup,)g(the)g(resumer)f
(pro)r(cedure)h(for)f(a)h(t)n(yp)r(e)g(is)g(applied)g(to)g(eac)n(h)g
(record)f(of)h(that)291 2288 y(t)n(yp)r(e)i(in)g(the)g(image)f(b)r
(eing)h(restarted.)45 b(This)31 b(pro)r(cedure)f(can)g(up)r(date)i(the)
f(record)e(in)i(a)291 2388 y(manner)19 b(appropriate)f(to)i(the)g(mac)n
(hine,)h(op)r(erating)d(system,)k(or)c(pro)r(cess)h(used)h(to)f(resume)
291 2487 y(the)28 b(image.)p Black 307 2630 a Fn(\017)p
Black 41 w Fo(\(define-record-re)o(su)o(mer)35 b Fq(r)l(e)l(c)l(or)l
(d-typ)l(e)41 b(pr)l(o)l(c)l(e)l(dur)l(e)6 b Fo(\))291
2772 y(Define-record-r)o(esu)o(me)o(r)18 b Fr(de\014nes)25
b Fq(pr)l(o)l(c)l(e)l(dur)l(e)6 b Fr(,)25 b(whic)n(h)g(should)f(accept)
g(one)g(argumen)n(t,)291 2872 y(to)30 b(b)r(e)h(the)h(resumer)d(for)i
Fq(r)l(e)l(c)l(or)l(d-typ)l(e)6 b Fr(.)47 b(The)30 b(order)g(in)h(whic)
n(h)g(resumer)e(pro)r(cedures)h(are)291 2971 y(called)d(is)g(not)h(sp)r
(eci\014ed.)415 3071 y(The)33 b Fq(pr)l(o)l(c)l(e)l(dur)l(e)39
b Fr(argumen)n(t)31 b(to)i Fo(define-record-re)o(sum)o(er)26
b Fr(ma)n(y)32 b(b)r(e)h Fo(#f)p Fr(,)g(in)g(whic)n(h)291
3171 y(case)21 b(records)g(of)i(the)g(giv)n(en)f(t)n(yp)r(e)h(are)f
(not)h(written)g(out)f(in)h(heap)g(images.)34 b(When)23
b(writing)291 3270 y(a)36 b(heap)h(image)g(an)n(y)g(reference)f(to)h
(suc)n(h)g(a)g(record)f(is)h(replaced)f(b)n(y)h(the)h(v)-5
b(alue)37 b(of)h(the)291 3370 y(record's)26 b(\014rst)h(\014eld,)h(and)
f(an)h(exception)f(is)g(raised)g(after)g(the)h(image)f(is)g(written.)
291 3643 y Fj(8.8)135 b(Using)46 b(Sc)l(heme)f(records)f(in)h(C)g(co)t
(de)291 3825 y Fr(External)26 b(mo)r(dules)i(can)f(create)f(records)g
(and)i(access)e(their)i(slots)f(p)r(ositionally)-7 b(.)p
Black 307 3967 a Fn(\017)p Black 41 w Fo(s48)p 527 3967
V 30 w(ref)p 689 3967 V 30 w(t)42 b(s48)p 937 3967 V
30 w(make)p 1143 3967 V 29 w(record)p 1436 3967 V 29
w(2\(s48)p 1685 3967 V 30 w(call)p 1891 3967 V 29 w(t,)f(s48)p
2181 3967 V 30 w(ref)p 2343 3967 V 30 w(t\))329 b Fr(\(ma)n(y)27
b(GC\))p Black 307 4067 a Fn(\017)p Black 41 w Fo(int)290
b(s48)p 949 4067 V 30 w(record)p 1243 4067 V 29 w(p)p
1316 4067 V 31 w(2\(s48)p 1567 4067 V 29 w(call)p 1772
4067 V 30 w(t,)40 b(s48)p 2062 4067 V 30 w(ref)p 2224
4067 V 31 w(t\))p Black 307 4166 a Fn(\017)p Black 41
w Fo(s48)p 527 4166 V 30 w(ref)p 689 4166 V 30 w(t)i(s48)p
937 4166 V 30 w(record)p 1231 4166 V 29 w(type)p 1436
4166 V 29 w(2\(s48)p 1685 4166 V 30 w(call)p 1891 4166
V 29 w(t,)f(s48)p 2181 4166 V 30 w(ref)p 2343 4166 V
30 w(t\))p Black 307 4266 a Fn(\017)p Black 41 w Fo(s48)p
527 4266 V 30 w(ref)p 689 4266 V 30 w(t)h(s48)p 937 4266
V 30 w(record)p 1231 4266 V 29 w(ref)p 1392 4266 V 30
w(2\(s48)p 1642 4266 V 29 w(call)p 1847 4266 V 30 w(t,)e(s48)p
2137 4266 V 31 w(ref)p 2300 4266 V 30 w(t,)g(long\))p
Black 307 4366 a Fn(\017)p Black 41 w Fo(void)248 b(s48)p
951 4366 V 30 w(record)p 1245 4366 V 29 w(set)p 1406
4366 V 30 w(2\(s48)p 1656 4366 V 29 w(call)p 1861 4366
V 30 w(t,)41 b(s48)p 2152 4366 V 30 w(ref)p 2314 4366
V 30 w(t,)f(long,)g(s48)p 2864 4366 V 30 w(ref)p 3026
4366 V 30 w(t\))291 4508 y Fr(The)24 b(argumen)n(t)f(to)i
Fo(s48)p 1062 4508 V 30 w(make)p 1268 4508 V 29 w(record)p
1561 4508 V 29 w(2)f Fr(should)g(b)r(e)h(a)f(shared)g(binding)g(whose)g
(v)-5 b(alue)24 b(is)291 4608 y(a)k(record)f(t)n(yp)r(e.)40
b(In)29 b(C)g(the)g(\014elds)f(of)h(Sc)n(heme)g(records)e(are)g(only)h
(accessible)g(via)g(o\013sets,)291 4707 y(with)f(the)g(\014rst)g
(\014eld)g(ha)n(ving)f(o\013set)h(zero,)f(the)h(second)f(o\013set)h
(one,)g(and)f(so)h(forth.)36 b(If)28 b(the)291 4807 y(order)e(of)i(the)
g(\014elds)g(is)g(c)n(hanged)f(in)h(the)h(Sc)n(heme)e(de\014nition)i
(of)f(the)g(record)e(t)n(yp)r(e)j(the)f(C)291 4907 y(co)r(de)f(m)n(ust)
h(b)r(e)g(up)r(dated)g(as)f(w)n(ell.)415 5006 y(F)-7
b(or)27 b(example,)g(giv)n(en)g(the)h(follo)n(wing)f(record-t)n(yp)r(e)
f(de\014nition)p Black 1660 5255 a(121)p Black eop end
%%Page: 122 130
TeXDict begin 122 129 bop 0 TeXcolorgray Black Black
Black Black Black 739 523 a Fo(\(define-record-t)o(yp)o(e)38
b(thing)j(:thing)826 623 y(\(make-thing)e(a)k(b\))826
722 y(thing?)826 822 y(\(a)g(thing-a\))826 922 y(\(b)g(thing-b\)\))739
1081 y Fr(the)28 b(iden)n(ti\014er)f Fo(:thing)f Fr(is)h(b)r(ound)h(to)
f(the)h(record)f(t)n(yp)r(e)g(and)h(can)f(b)r(e)h(exp)r(orted)f(to)h
(C:)p Black Black 739 1240 a Fo(\(define-exported)o(-b)o(ind)o(in)o(g)
38 b("thing-record-t)o(ype)o(")f(:thing\))739 1400 y(Thing)26
b Fr(records)f(can)j(then)g(b)r(e)g(made)f(in)h(C:)p
Black Black 739 1559 a Fo(static)41 b(s48_ref_t)826 1659
y(thing_record_typ)o(e_b)o(in)o(din)o(g)c(=)43 b(NULL;)739
1858 y(void)f(initialize_thing)o(s\()o(voi)o(d\))739
1958 y Fn(f)826 2057 y Fo(thing_record_typ)o(e_b)o(in)o(din)o(g)37
b(=)957 2157 y(s48_get_imported)o(_b)o(ind)o(in)o(g_)o(2\(")o(th)o(ing)
o(-r)o(eco)o(rd)o(-t)o(ype)o("\))o(;)739 2257 y Fn(g)739
2456 y Fo(s48_ref_t)j(make_thing\(s48_c)o(al)o(l_)o(t)e(call,)j
(s48_ref_t)f(a,)j(s48_ref_t)d(b\))739 2555 y Fn(f)826
2655 y Fo(s48_ref_t)g(thing;)826 2755 y(thing)i(=)h(s48_make_record_)o
(2\()o(ca)o(ll,)37 b(thing_record_typ)o(e_)o(bin)o(di)o(ng)o(\);)826
2854 y(s48_record_set_2)o(\(ca)o(ll)o(,)h(thing,)j(0,)h(a\);)826
2954 y(s48_record_set_2)o(\(ca)o(ll)o(,)c(thing,)j(1,)h(b\);)826
3054 y(return)f(thing;)739 3153 y Fn(g)739 3313 y Fr(Note)30
b(that)g(the)h(in)n(terface)e(tak)n(es)g(care)g(of)h(protecting)g(all)g
(lo)r(cal)f(references)g(against)g(the)739 3412 y(p)r(ossibilit)n(y)18
b(of)g(a)g(garbage)e(collection)i(o)r(ccurring)f(during)h(the)h(call)f
(to)g Fo(s48)p 3048 3412 27 4 v 30 w(make)p 3254 3412
V 30 w(record)p 3548 3412 V 29 w(2\(\))p Fr(;)739 3512
y(also)25 b(note)i(that)g(the)f(record)g(t)n(yp)r(e)g(binding)h(is)f(a)
g(global)g(reference)f(that)i(is)g(liv)n(e)f(un)n(til)h(ex-)739
3611 y(plicitly)h(freed.)739 3885 y Fj(8.9)135 b(Raising)47
b(exceptions)e(from)g(external)i(co)t(de)739 4066 y Fr(The)34
b(follo)n(wing)f(macros)f(explicitly)i(raise)f(certain)h(errors,)f
(immediately)h(returning)f(to)739 4166 y(Sc)n(heme)38
b(48.)66 b(Raising)37 b(an)h(exception)f(p)r(erforms)g(all)h(necessary)
e(clean-up)h(actions)g(to)739 4266 y(prop)r(erly)30 b(return)h(to)g(Sc)
n(heme)f(48,)i(including)f(adjusting)g(the)g(stac)n(k)f(of)h(protected)
g(v)-5 b(ari-)739 4365 y(ables.)863 4465 y(The)28 b(follo)n(wing)e(pro)
r(cedures)h(are)f(a)n(v)-5 b(ailable)27 b(for)g(raising)f(particular)g
(t)n(yp)r(es)h(of)h(excep-)739 4565 y(tions.)37 b(These)27
b(nev)n(er)g(return.)p Black 755 4707 a Fn(\017)p Black
42 w Fo(s48)p 976 4707 V 30 w(assertion)p 1402 4707 V
27 w(violation)p 1825 4707 V 28 w(2\(s48)p 2073 4707
V 29 w(call)p 2278 4707 V 30 w(t,)41 b(const)e(char*)h(who,)f(const)h
(char*)f(message,)g(long)g(count,)g(...\))p Black 755
4807 a Fn(\017)p Black 42 w Fo(s48)p 976 4807 V 30 w(error)p
1226 4807 V 29 w(2\(s48)p 1475 4807 V 29 w(call)p 1680
4807 V 30 w(t,)i(const)e(char*)h(who,)f(const)h(char*)f(message,)g
(long)g(count,)g(...\))p Black 755 4907 a Fn(\017)p Black
42 w Fo(s48)p 976 4907 V 30 w(os)p 1094 4907 V 30 w(error)p
1344 4907 V 30 w(2\(s48)p 1594 4907 V 29 w(call)p 1799
4907 V 30 w(t,)h(const)g(char*)f(who,)h(const)f(char*)h(message,)e
(long)i(count,)f(...\))p Black 755 5006 a Fn(\017)p Black
42 w Fo(s48)p 976 5006 V 30 w(out)p 1138 5006 V 30 w(of)p
1256 5006 V 30 w(memory)p 1550 5006 V 29 w(error)p 1799
5006 V 30 w(2\(s48)p 2049 5006 V 29 w(call)p 2254 5006
V 30 w(t,)h(\))p Black 2109 5255 a Fr(122)p Black eop
end
%%Page: 123 131
TeXDict begin 123 130 bop 0 TeXcolorgray Black Black
Black 291 523 a Fr(An)19 b(assertion)e(violation)g(signaled)h(via)g
Fo(s48)p 1664 523 27 4 v 30 w(assertion)p 2090 523 V
28 w(violation)p 2514 523 V 27 w(2)g Fr(t)n(ypically)g(means)291
623 y(that)23 b(an)f(in)n(v)-5 b(alid)23 b(argumen)n(t)f(\(or)g(in)n(v)
-5 b(alid)23 b(n)n(um)n(b)r(er)g(of)f(argumen)n(ts\))g(has)h(b)r(een)g
(passed.)34 b(An)291 722 y(error)24 b(signaled)i(via)h
Fo(s48)p 1084 722 V 30 w(error)p 1334 722 V 29 w(2)g
Fr(means)f(that)h(an)g(en)n(vironmen)n(tal)e(error)g(\(lik)n(e)i(an)g
(I/O)291 822 y(error\))38 b(has)h(o)r(ccurred.)73 b(In)41
b(b)r(oth)f(cases,)i Fo(who)d Fr(indicates)h(the)g(lo)r(cation)f(of)h
(the)h(error,)291 922 y(t)n(ypically)26 b(the)h(name)g(of)f(the)i
(function)f(it)g(o)r(ccurred)f(in.)37 b(It)27 b(ma)n(y)f(b)r(e)h
Fo(NULL)p Fr(,)f(in)h(whic)n(h)g(the)291 1021 y(system)f(guesses)g(a)g
(name.)37 b(The)27 b Fo(message)d Fr(argumen)n(t)i(is)h(an)f(error)f
(message)h(enco)r(ded)h(in)291 1121 y(UTF-8.)35 b(Additional)23
b(argumen)n(ts)f(ma)n(y)g(b)r(e)h(passed)g(that)g(b)r(ecome)g(part)g
(of)g(the)g(condition)291 1220 y(ob)5 b(ject)33 b(that)h(will)g(b)r(e)g
(raised)f(on)g(the)h(Sc)n(heme)g(side:)49 b Fo(count)32
b Fr(indicates)h(their)h(n)n(um)n(b)r(er,)291 1320 y(and)27
b(the)h(argumen)n(ts)e(\(whic)n(h)i(m)n(ust)g(b)r(e)g(of)f(t)n(yp)r(e)h
Fo(s48)p 2006 1320 V 30 w(ref)p 2168 1320 V 30 w(t)p
Fr(\))g(follo)n(w.)415 1420 y(The)22 b Fo(s48)p 717 1420
V 31 w(os)p 836 1420 V 30 w(error)p 1086 1420 V 29 w(2)g
Fr(function)h(is)f(lik)n(e)g Fo(s48)p 1858 1420 V 30
w(error)p 2108 1420 V 30 w(2)p Fr(,)h(except)f(that)g(the)h(error)d
(mes-)291 1519 y(sage)d(is)h(inferred)g(from)g(an)g(OS)g(error)f(co)r
(de)h(\(as)g(in)g Fo(strerror)p Fr(\).)31 b(The)19 b
Fo(s48)p 2582 1519 V 30 w(out)p 2744 1519 V 30 w(of)p
2862 1519 V 31 w(memory)p 3157 1519 V 28 w(error)p 3405
1519 V 30 w(2)291 1619 y Fr(function)28 b(signals)e(that)i(the)g
(system)f(has)g(run)h(out)f(of)h(memory)-7 b(.)415 1719
y(The)34 b(follo)n(wing)f(macros)g(raise)g(assertion)f(violations)h(if)
i(their)f(argumen)n(t)f(do)r(es)h(not)291 1818 y(ha)n(v)n(e)26
b(the)i(required)f(t)n(yp)r(e.)37 b Fo(s48)p 1307 1818
V 30 w(check)p 1557 1818 V 29 w(boolean)p 1894 1818 V
29 w(2)27 b Fr(raises)f(an)i(error)d(if)k(its)e(argumen)n(t)g(is)291
1918 y(neither)g Fo(#t)g Fr(or)g Fo(#f)p Fr(.)p Black
307 2066 a Fn(\017)p Black 41 w Fo(void)40 b(s48)p 743
2066 V 30 w(check)p 993 2066 V 30 w(boolean)p 1331 2066
V 28 w(2\(s48)p 1579 2066 V 29 w(call)p 1784 2066 V 30
w(t,)h(s48)p 2075 2066 V 30 w(ref)p 2237 2066 V 30 w(t\))p
Black 307 2165 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2165 V 30 w(check)p 993 2165 V 30 w(symbol)p 1287
2165 V 28 w(2\(s48)p 1535 2165 V 30 w(call)p 1741 2165
V 29 w(t,)h(s48)p 2031 2165 V 30 w(ref)p 2193 2165 V
30 w(t\))p Black 307 2265 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2265 V 30 w(check)p 993 2265 V 30 w(pair)p 1199 2265
V 29 w(2\(s48)p 1448 2265 V 30 w(call)p 1654 2265 V 29
w(t,)h(s48)p 1944 2265 V 30 w(ref)p 2106 2265 V 30 w(t\))p
Black 307 2365 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2365 V 30 w(check)p 993 2365 V 30 w(string)p 1287
2365 V 28 w(2\(s48)p 1535 2365 V 30 w(call)p 1741 2365
V 29 w(t,)h(s48)p 2031 2365 V 30 w(ref)p 2193 2365 V
30 w(t\))p Black 307 2464 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2464 V 30 w(check)p 993 2464 V 30 w(integer)p 1331
2464 V 28 w(2\(s48)p 1579 2464 V 29 w(call)p 1784 2464
V 30 w(t,)h(s48)p 2075 2464 V 30 w(ref)p 2237 2464 V
30 w(t\))p Black 307 2564 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2564 V 30 w(check)p 993 2564 V 30 w(channel)p 1331
2564 V 28 w(2\(s48)p 1579 2564 V 29 w(call)p 1784 2564
V 30 w(t,)h(s48)p 2075 2564 V 30 w(ref)p 2237 2564 V
30 w(t\))p Black 307 2663 a Fn(\017)p Black 41 w Fo(void)f(s48)p
743 2663 V 30 w(check)p 993 2663 V 30 w(byte)p 1199 2663
V 29 w(vector)p 1492 2663 V 29 w(2\(s48)p 1741 2663 V
29 w(call)p 1946 2663 V 30 w(t,)h(s48)p 2237 2663 V 30
w(ref)p 2399 2663 V 30 w(t\))p Black 307 2763 a Fn(\017)p
Black 41 w Fo(void)f(s48)p 743 2763 V 30 w(check)p 993
2763 V 30 w(record)p 1287 2763 V 28 w(2\(s48)p 1535 2763
V 30 w(call)p 1741 2763 V 29 w(t,)h(s48)p 2031 2763 V
30 w(ref)p 2193 2763 V 30 w(t\))p Black 307 2863 a Fn(\017)p
Black 41 w Fo(void)f(s48)p 743 2863 V 30 w(check)p 993
2863 V 30 w(shared)p 1287 2863 V 28 w(binding)p 1623
2863 V 29 w(2\(s48)p 1872 2863 V 29 w(call)p 2077 2863
V 30 w(t,)h(s48)p 2368 2863 V 30 w(ref)p 2530 2863 V
30 w(t\))291 3137 y Fj(8.10)135 b(External)46 b(ev)l(en)l(ts)291
3319 y Fr(External)17 b(co)r(de)h(can)g(push)g(the)h(o)r(ccurrence)e
(of)i(external)e(ev)n(en)n(ts)h(in)n(to)g(the)h(main)f(Sc)n(heme)g(48)
291 3418 y(ev)n(en)n(t)27 b(lo)r(op)g(and)g(Sc)n(heme)h(co)r(de)f(can)g
(w)n(ait)h(and)f(act)g(on)h(external)e(ev)n(en)n(ts.)415
3518 y(On)18 b(the)h(Sc)n(heme)g(side,)h(the)f(external)f(ev)n(en)n(ts)
g(functionalit)n(y)h(consists)e(of)i(the)g(follo)n(wing)291
3618 y(functions)27 b(from)h(the)g(structure)f Fo(primitives)p
Fr(:)p Black 307 3766 a Fn(\017)p Black 41 w Fo(\(new-external-eve)o
(nt)o(-ui)o(d)35 b Fq(shar)l(e)l(d-binding-or-#f)20 b
Fo(\))41 b Fn(!)83 b Fq(uid)p Black 307 3865 a Fn(\017)p
Black 41 w Fo(\(unregister-exter)o(na)o(l-e)o(ve)o(nt)o(-ui)o(d!)35
b Fq(uid)9 b Fo(\))291 4013 y Fr(And)28 b(the)g(follo)n(wing)e
(functions)i(from)f(the)h(structure)g Fo(external-events)o
Fr(:)p Black 307 4161 a Fn(\017)p Black 41 w Fo(\(register-condvar)o
(-f)o(or-)o(ex)o(te)o(rna)o(l-)o(eve)o(nt)o(!)35 b Fq(uid)42
b(c)l(ondvar)9 b Fo(\))p Black 307 4261 a Fn(\017)p Black
41 w Fo(\(wait-for-externa)o(l-)o(eve)o(nt)35 b Fq(c)l(ondvar)9
b Fo(\))p Black 307 4360 a Fn(\017)p Black 41 w Fo(\(new-external-eve)o
(nt)o(\))35 b Fn(!)83 b Fq(uid)42 b(c)l(ondvar)291 4508
y Fr(The)22 b(function)g Fo(new-external-even)o(t-)o(uid)15
b Fr(returns)22 b(a)f(fresh)h(ev)n(en)n(t)g(iden)n(ti\014er)f(on)h(ev)n
(ery)291 4608 y(call.)33 b(When)19 b(called)f(with)h(a)f(shared)f
(binding)i(instead)f(of)25 b Fo(#f)p Fr(,)19 b Fo(new-external-even)o
(t-)o(uid)291 4707 y Fr(returns)e(a)h(named)g(ev)n(en)n(t)g(iden)n
(ti\014er)h(for)e(p)r(ermanen)n(t)i(use.)33 b(The)19
b(function)g Fo(unregister-exte)o(rna)o(l-)o(ev)o(ent)o(-u)o(id)291
4807 y Fr(unregisters)26 b(the)i(giv)n(en)e(ev)n(en)n(t)i(iden)n
(ti\014er.)415 4907 y(External)40 b(ev)n(en)n(ts)h(use)g(condition)g(v)
-5 b(ariables)40 b(to)h(sync)n(hronize)e(the)j(o)r(ccurrence)e(of)291
5006 y(ev)n(en)n(ts,)21 b(see)g(section)p 0 0 1 TeXcolorrgb
21 w(7.5)p Black 20 w(for)g(more)f(information)h(on)g(condition)g(v)-5
b(ariables.)33 b(The)21 b(function)p Black 1660 5255
a(123)p Black eop end
%%Page: 124 132
TeXDict begin 124 131 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(register-condvar)o(-f)o(or-)o(ex)o(ter)o(na)o(l-)o
(eve)o(nt)14 b Fr(registers)20 b(a)g(condition)h(v)-5
b(ariable)20 b(with)i(an)739 623 y(ev)n(en)n(t)30 b(iden)n(ti\014er.)46
b(F)-7 b(or)30 b(con)n(v)n(enience,)g(the)h(function)g
Fo(new-external-eve)o(nt)24 b Fr(com)n(bines)739 722
y Fo(new-external-eve)o(nt)o(-ui)o(d)31 b Fr(and)37 b
Fo(register-condvar-)o(for)o(-e)o(xte)o(rn)o(al)o(-ev)o(en)o(t)31
b Fr(and)739 822 y(returns)c(a)g(fresh)g(ev)n(en)n(t)g(iden)n(ti\014er)
h(and)f(the)h(corresp)r(onding)e(condition)h(v)-5 b(ariable.)863
922 y(The)39 b(function)g Fo(wait-for-extern)o(al-)o(ev)o(en)o(t)32
b Fr(blo)r(c)n(ks)38 b(the)h(caller)e(\(on)h(the)h(condi-)739
1022 y(tion)32 b(v)-5 b(ariable\))32 b(un)n(til)h(the)g(Sc)n(heme)g
(main)f(ev)n(en)n(t)g(lo)r(op)g(receiv)n(es)f(an)i(ev)n(en)n(t)f
(noti\014cation)739 1122 y(\(b)n(y)38 b Fo(s48)p 1034
1122 27 4 v 30 w(note)p 1240 1122 V 29 w(external)p 1621
1122 V 29 w(event)p Fr(\))c(of)j(the)g(ev)n(en)n(t)f(iden)n(ti\014er)g
(that)h(is)g(registered)e(with)739 1221 y(the)e(giv)n(en)f(condition)h
(v)-5 b(ariable)32 b(\(with)h Fo(register-condvar-)o(fo)o(r-e)o(xt)o
(ern)o(al)o(-e)o(ven)o(t)p Fr(\).)739 1321 y(There)19
b(is)h(no)g(guaran)n(tee)e(that)i(the)g(caller)f(of)27
b Fo(wait-for-externa)o(l-)o(ev)o(ent)13 b Fr(is)20 b(un)n(blo)r(c)n(k)
n(ed)739 1420 y(on)f(ev)n(ery)f(ev)n(en)n(t)h(noti\014cation,)h
(therefore)f(the)h(caller)e(has)h(to)g(b)r(e)h(prepared)e(to)h(handle)g
(m)n(ul-)739 1520 y(tiple)31 b(external)f(ev)n(en)n(ts)g(that)h(ha)n(v)
n(e)e(o)r(ccurred)h(and)g(external)g(co)r(de)h(has)f(to)g(b)r(e)h
(prepared)739 1620 y(to)c(store)g(m)n(ultiple)h(external)f(ev)n(en)n
(ts.)863 1720 y(The)h(follo)n(wing)f(protot)n(yp)r(e)f(is)i(the)g(in)n
(terface)f(on)g(the)h(external)f(side:)p Black 755 1872
a Fn(\017)p Black 42 w Fo(void)39 b(s48)p 1191 1872 V
31 w(note)p 1398 1872 V 29 w(external)p 1779 1872 V 28
w(event\(long\))739 2023 y Fr(External)17 b(co)r(de)h(has)g(to)g
(collect)g(external)g(ev)n(en)n(ts)g(and)g(can)g(use)g
Fo(s48)p 2853 2023 V 30 w(note)p 3059 2023 V 30 w(external)p
3441 2023 V 28 w(event)739 2123 y Fr(to)31 b(signal)g(the)h(o)r
(ccurrence)e(of)i(an)f(external)g(ev)n(en)n(t)g(to)g(the)h(main)f(ev)n
(en)n(t)h(lo)r(op.)48 b(The)31 b(ar-)739 2223 y(gumen)n(t)c(to)g
Fo(s48)p 1274 2223 V 30 w(note)p 1480 2223 V 30 w(external)p
1862 2223 V 28 w(event)e Fr(is)i(an)g(ev)n(en)n(t)g(iden)n(ti\014er)g
(that)g(w)n(as)f(previously)739 2322 y(registered)21
b(on)h(the)g(Sc)n(heme)g(side.)35 b(Th)n(us,)24 b(external)d(co)r(de)h
(has)g(to)g(obtain)g(the)h(ev)n(en)n(t)e(iden-)739 2422
y(ti\014er)h(from)f(the)h(Sc)n(heme)g(side,)h(either)e(b)n(y)h(passing)
f(the)h(ev)n(en)n(t)f(iden)n(ti\014er)h(as)f(an)g(argumen)n(t)739
2522 y(to)33 b(the)h(external)f(function)h(that)f(calls)g
Fo(s48)p 2166 2522 V 30 w(note)p 2372 2522 V 30 w(external)p
2754 2522 V 28 w(event)e Fr(or)i(b)n(y)g(exp)r(orting)739
2621 y(the)28 b(Sc)n(heme)f(v)-5 b(alue)28 b(to)f(C)h(\(see)f(section)p
0 0 1 TeXcolorrgb 28 w(8.2.1)p Black(\).)863 2722 y(Since)19
b(the)g(main)f(ev)n(en)n(t)g(lo)r(op)g(do)r(es)g(not)g(guaran)n(tee)f
(that)h(ev)n(ery)g(call)g(to)g Fo(s48)p 3227 2722 V 30
w(note)p 3433 2722 V 30 w(external)p 3815 2722 V 28 w(event)739
2821 y Fr(causes)33 b(the)h(just)g(o)r(ccurred)f(ev)n(en)n(t)g(to)g
(get)h(handled)g(immediately)-7 b(,)35 b(external)e(co)r(de)h(has)739
2921 y(to)20 b(mak)n(e)f(sure)h(that)h(it)f(can)g(collect)g(m)n
(ultiple)h(external)e(ev)n(en)n(ts)h(\(i.e.)35 b(k)n(eep)20
b(them)g(in)h(an)f(ap-)739 3020 y(propriate)d(data)h(structure\).)33
b(It)19 b(is)f(safe)g(for)g(external)g(co)r(de)g(to)g(call)g
Fo(s48)p 2981 3020 V 30 w(note)p 3187 3020 V 30 w(external)p
3569 3020 V 28 w(event)739 3120 y Fr(on)34 b(ev)n(ery)g(collected)g
(external)g(ev)n(en)n(t,)i(though,)g(ev)n(en)f(if)g(older)f(ev)n(en)n
(ts)g(ha)n(v)n(e)f(not)i(b)r(een)739 3220 y(handled)28
b(y)n(et.)739 3456 y Fe(8.10.1)112 b(Collecting)38 b(external)g(ev)m
(en)m(ts)g(in)f(external)h(co)s(de)739 3611 y Fr(External)h(co)r(de)h
(has)g(to)g(b)r(e)g(able)g(to)g(collect)g(m)n(ultiple)h(ev)n(en)n(ts)f
(that)g(ha)n(v)n(e)f(o)r(ccurred.)739 3710 y(Therefore,)30
b(external)h(co)r(de)f(has)h(to)f(create)g(the)i(needed)f(data)f
(structures)g(to)h(store)f(the)739 3810 y(information)f(that)i(is)f
(asso)r(ciated)f(with)i(the)f(o)r(ccurred)f(ev)n(en)n(t.)44
b(Usually)-7 b(,)31 b(external)e(co)r(de)739 3910 y(collects)e(the)i
(ev)n(en)n(ts)e(in)h(a)g(thread.)37 b(An)29 b(separate)d(thread)i(do)r
(es)g(not)g(ha)n(v)n(e)e(an)i(call)g(argu-)739 4009 y(men)n(t,)i
(though,)g(so)f(it)h(cannot)f(create)f(Sc)n(heme)i(data)f(structures.)
41 b(It)30 b(m)n(ust)g(use)f(C)h(data)739 4109 y(structures)25
b(to)g(collect)g(the)h(ev)n(en)n(ts,)f(for)g(example)h(it)f(can)h
(create)e(a)h(link)n(ed)h(list)f(of)h(ev)n(en)n(ts.)863
4209 y(Since)32 b(the)f(ev)n(en)n(ts)f(are)g(later)h(handled)g(on)f
(the)i(Sc)n(heme)f(side,)g(the)h(information)e(as-)739
4309 y(so)r(ciated)d(with)h(the)g(ev)n(en)n(t)f(needs)h(to)f(b)r(e)h
(visible)f(on)h(the)g(Sc)n(heme)f(side,)h(to)r(o.)36
b(Therefore,)739 4408 y(external)c(co)r(de)h(exp)r(orts)f(a)h(function)
h(to)f(Sc)n(heme)g(that)g(returns)g(all)f(curren)n(t)h(ev)n(en)n(ts)f
(as)739 4508 y(Sc)n(heme)e(ob)5 b(jects)30 b(\(the)h(function)g(that)f
(returns)g(the)g(ev)n(en)n(ts)g(kno)n(ws)f(ab)r(out)h(the)h(curren)n(t)
739 4608 y(call)23 b(and)g(th)n(us)g(can)g(create)f(Sc)n(heme)h(ob)5
b(jects\).)35 b(Sc)n(heme)24 b(and)f(external)f(co)r(de)h(migh)n(t)g
(need)739 4707 y(to)30 b(share)g(Sc)n(heme)g(record)g(t)n(yp)r(es)g
(that)h(represen)n(t)f(the)h(ev)n(en)n(t)f(information.)45
b(T)n(ypically)-7 b(,)739 4807 y(the)37 b(function)f(that)h(returns)f
(the)g(ev)n(en)n(ts)g(con)n(v)n(erts)e(the)j(C)f(ev)n(en)n(t)g(list)g
(in)n(to)g(a)g(Sc)n(heme)739 4907 y(ev)n(en)n(t)f(list)h(b)n(y)g
(preserving)e(the)i(original)e(order)h(in)h(whic)n(h)f(the)i(ev)n(en)n
(ts)e(arriv)n(ed.)59 b(Note)739 5006 y(that)36 b(the)g(external)f(list)
h(data)f(structure)g(that)h(holds)g(all)f(ev)n(en)n(ts)g(needs)g(to)h
(b)r(e)g(m)n(utex)p Black 2109 5255 a(124)p Black eop
end
%%Page: 125 133
TeXDict begin 125 132 bop 0 TeXcolorgray Black Black
Black 291 523 a Fr(lo)r(c)n(k)n(ed)32 b(on)i(eac)n(h)f(access)g(to)g
(preserv)n(e)f(thread-safe)h(manipulation)g(of)h(the)g(data)g(struc-)
291 623 y(ture)k(\(the)h(Sc)n(heme)g(thread)f(that)h(pro)r(cesses)e(ev)
n(en)n(ts)h(and)h(the)g(external)e(thread)i(that)291
722 y(collects)27 b(ev)n(en)n(ts)f(ma)n(y)h(access)g(the)h(data)f
(structures)g(at)g(the)h(same)f(time\).)291 950 y Fe(8.10.2)112
b(Handling)39 b(external)f(ev)m(en)m(ts)f(in)h(Sc)m(heme)291
1103 y Fr(If)28 b(the)h(sole)f(o)r(ccurrence)f(of)h(an)g(ev)n(en)n(t)g
(do)r(es)g(not)h(su\016ce)f(for)g(the)h(program,)d(the)j(Sc)n(heme)291
1203 y(side)35 b(has)g(to)g(pull)g(the)h(information)f(that)g(is)h
(asso)r(ciated)e(with)h(an)g(ev)n(en)n(t)g(from)g(the)h(C)291
1302 y(side.)h(Then,)28 b(the)h(Sc)n(heme)e(side)h(can)g(handle)f(the)i
(ev)n(en)n(t)e(data.)37 b(F)-7 b(or)27 b(example,)h(a)f(t)n(ypical)291
1402 y(ev)n(en)n(t)k(lo)r(op)h(on)g(the)h(Sc)n(heme)f(side)g(that)h(w)n
(aits)e(on)h(external)g(ev)n(en)n(ts)f(of)h(an)g(p)r(ermanen)n(t)291
1501 y(ev)n(en)n(t)27 b(t)n(yp)r(e)g(that)h(an)g(long-running)e
(external)h(thread)g(pro)r(duces)g(ma)n(y)g(lo)r(ok)f(lik)n(e)i(this:)p
Black Black 291 1655 a Fo(\(define)40 b(*external-event-u)o(id)o(*)378
1755 y(\(new-external-ev)o(en)o(t-)o(uid)d(\(lookup-imported)o(-b)o
(ind)o(in)o(g)g("my-event"\)\)\))291 1954 y(\(spawn-external)o(-th)o
(re)o(ad)g(*external-event-)o(uid)o(*\))291 2154 y(\(let)42
b(loop)f(\(\))378 2253 y(\(let)h(\(\(condvar)e(\(make-condvar\)\))o(\))
465 2353 y(\(register-condva)o(r-)o(for)o(-e)o(xte)o(rn)o(al-)o(ev)o
(en)o(t!)d(*external-event-u)o(id)o(*)h(condvar\))465
2452 y(\(wait-for-extern)o(al)o(-ev)o(en)o(t)g(condvar\))465
2552 y(\(process-externa)o(l-)o(eve)o(nt)o(s!)f(\(get-external-eve)o
(nt)o(s\))o(\))465 2652 y(\(loop\)\)\))291 2806 y Fr(In)27
b(the)g(ab)r(o)n(v)n(e)f(example,)h(the)g(v)-5 b(ariable)26
b Fo(*external-event-u)o(id)o(*)21 b Fr(is)27 b(de\014ned)g(as)g(a)f(p)
r(er-)291 2905 y(manen)n(t)39 b(ev)n(en)n(t)g(iden)n(ti\014er.)73
b(On)39 b(ev)n(ery)g(pass)f(through)h(the)h(lo)r(op,)j(a)c(fresh)g
(condition)291 3005 y(v)-5 b(ariable)23 b(is)h(registered)f(with)i(the)
g(ev)n(en)n(t)f(iden)n(ti\014er,)h(then)g Fo(wait-for-external)o(-e)o
(ven)o(t)291 3104 y Fr(blo)r(c)n(ks)i(on)h(the)h(condition)f(v)-5
b(ariable)27 b(un)n(til)i(external)f(co)r(de)g(signals)f(the)i(o)r
(ccurrence)e(of)h(a)291 3204 y(matc)n(hing)17 b(ev)n(en)n(t.)34
b(Note)18 b(that)h Fo(process-external)o(-e)o(ven)o(ts)o(!)28
b Fr(and)18 b Fo(get-external-eve)o(nt)o(s)291 3304 y
Fr(need)g(to)g(b)r(e)h(de\014ned)g(b)n(y)f(the)h(user.)33
b(The)18 b(user-written)g(function)h Fo(get-external-eve)o(nt)o(s)291
3403 y Fr(returns)32 b(all)i(the)g(ev)n(en)n(ts)f(that)g(the)h
(external)f(co)r(de)g(has)h(collected)f(since)g(the)h(last)f(time)291
3503 y Fo(get-external-ev)o(ent)o(s)12 b Fr(w)n(as)18
b(called;)j(the)d(user-written)g(function)h Fo(process-external)o(-e)o
(ven)o(ts)o(!)291 3603 y Fr(handles)27 b(the)h(ev)n(en)n(ts)f(on)g(the)
h(Sc)n(heme)f(side.)415 3702 y(When)k(the)f(Sc)n(heme)g(side)h(only)e
(w)n(aits)h(for)f(one)h(single)g(ev)n(en)n(t,)g(there)g(is)g(no)g(need)
g(for)291 3802 y(an)g(ev)n(en)n(t)g(lo)r(op)g(and)g(an)g(p)r(ermanen)n
(t)g(ev)n(en)n(t)g(iden)n(ti\014er.)45 b(Then,)31 b Fo
(new-external-even)o(t)291 3901 y Fr(is)c(more)g(con)n(v)n(enien)n(t)f
(to)i(use:)p Black Black 291 4055 a Fo(\(call-with-valu)o(es)378
4155 y(\(lambda)40 b(\(\))j(\(new-external-eve)o(nt)o(\)\))378
4255 y(\(lambda)d(\(uid)i(condvar\))465 4354 y(\(spawn-external-)o(th)o
(rea)o(d)37 b(uid\))465 4454 y(\(wait-for-extern)o(al)o(-ev)o(en)o(t)h
(condvar\))465 4553 y(\(unregister-exte)o(rn)o(al-)o(ev)o(ent)o(-u)o
(id!)f(uid\))465 4653 y(...\)\))291 4807 y Fr(Here,)22
b Fo(new-external-eve)o(nt)15 b Fr(returns)21 b(a)g(fresh)g(ev)n(en)n
(t)g(iden)n(ti\014er)g(and)g(a)g(fresh)g(condition)291
4907 y(v)-5 b(ariable.)66 b(The)38 b(ev)n(en)n(t)g(iden)n(ti\014er)g
(is)f(passed)h(to)f Fo(spawn-external-th)o(rea)o(d)32
b Fr(and)38 b(the)291 5006 y(condition)27 b(v)-5 b(ariable)27
b(is)g(used)h(to)f(w)n(ait)g(for)g(the)h(o)r(ccurrence)f(of)g(the)h
(external)f(ev)n(en)n(t.)p Black 1660 5255 a(125)p Black
eop end
%%Page: 126 134
TeXDict begin 126 133 bop 0 TeXcolorgray Black Black
Black 863 523 a Fr(External)19 b(co)r(de)h(uses)g Fo(s48)p
1686 523 27 4 v 30 w(note)p 1892 523 V 30 w(external)p
2274 523 V 28 w(event)e Fr(to)i(push)h(the)f(fact)h(that)f(an)g(exter-)
739 623 y(nal)j(ev)n(en)n(t)f(o)r(ccurred)g(in)n(to)h(the)g(main)g(ev)n
(en)n(t)g(lo)r(op,)g(then)h(the)f(Sc)n(heme)g(co)r(de)g(needs)g(to)g
(pull)739 722 y(the)c(actual)e(ev)n(en)n(t)h(data)g(from)g(external)g
(co)r(de)g(\(in)h(this)g(example)f(with)g Fo(get-external-even)o(ts)p
Fr(\).)739 822 y(The)23 b(user-written)g(function)h Fo
(spawn-external-t)o(hr)o(ead)17 b Fr(runs)22 b(the)i(external)f(co)r
(de)g(that)739 922 y(informs)35 b(the)h(Sc)n(heme)g(side)f(ab)r(out)h
(the)f(o)r(ccurrence)g(of)g(external)g(ev)n(en)n(ts.)60
b(The)36 b(ev)n(en)n(t)739 1021 y(iden)n(ti\014er)26
b(is)h(passed)f(as)g(an)g(argumen)n(t.)35 b(The)27 b(external-ev)n(en)n
(t-related)d(parts)i(of)g(the)h(im-)739 1121 y(plemen)n(tation)g(of)34
b Fo(spawn-external-th)o(re)o(ad)21 b Fr(in)28 b(external)f(co)r(de)g
(could)h(lo)r(ok)f(lik)n(e)g(this:)p Black Black 739
1294 a Fo(s48_ref_t)739 1393 y(spawn_external_t)o(hr)o(ead)o(\(s)o(48_)
o(ca)o(ll)o(_t)37 b(call,)42 b(s48_ref_t)e(sch_event_uid\))d({)826
1493 y(...)826 1593 y(s48_note_externa)o(l_e)o(ve)o(nt\()o(s4)o(8_)o
(ext)o(ra)o(ct_)o(lo)o(ng_)o(2\()o(ca)o(ll,)g(sch_event_uid\)\);)826
1692 y(...)739 1792 y(})739 1965 y Fr(The)g(ev)n(en)n(t)f(iden)n
(ti\014er)g(is)g(extracted)g(from)g(its)h(Sc)n(heme)g(represen)n
(tation)d(and)j(used)f(to)739 2065 y(inform)27 b(the)h(Sc)n(heme)g
(side)f(ab)r(out)h(an)f(o)r(ccurrence)f(of)i(this)g(sp)r(eci\014c)g(ev)
n(en)n(t)f(t)n(yp)r(e.)739 2338 y Fj(8.11)135 b(Unsafe)46
b(functions)f(and)g(macros)739 2519 y Fr(All)25 b(of)f(the)g(C)h(pro)r
(cedures)e(and)h(macros)f(describ)r(ed)h(ab)r(o)n(v)n(e)e(c)n(hec)n(k)i
(that)g(their)h(argumen)n(ts)739 2619 y(ha)n(v)n(e)g(the)i(appropriate)
e(t)n(yp)r(es)i(and)f(that)h(indexes)f(are)g(in)h(range.)35
b(The)27 b(follo)n(wing)e(pro)r(ce-)739 2719 y(dures)c(and)g(macros)e
(are)i(iden)n(tical)g(to)g(those)g(describ)r(ed)g(ab)r(o)n(v)n(e,)g
(except)g(that)h(they)f(do)g(not)739 2818 y(p)r(erform)31
b(t)n(yp)r(e)h(and)f(range)g(c)n(hec)n(ks.)48 b(They)31
b(are)g(pro)n(vided)g(for)g(the)h(purp)r(ose)f(of)h(writing)739
2918 y(more)27 b(e\016cien)n(t)g(co)r(de;)h(their)f(general)g(use)g(is)
h(not)f(recommended.)p Black 755 3060 a Fn(\017)p Black
42 w Fo(long)247 b(s48)p 1399 3060 V 30 w(unsafe)p 1693
3060 V 29 w(extract)p 2030 3060 V 28 w(char)p 2234 3060
V 30 w(2\(s48)p 2484 3060 V 29 w(call)p 2689 3060 V 30
w(t,)41 b(s48)p 2980 3060 V 30 w(ref)p 3142 3060 V 30
w(t\))p Black 755 3159 a Fn(\017)p Black 42 w Fo(s48)p
976 3159 V 30 w(ref)p 1138 3159 V 30 w(t)g(s48)p 1385
3159 V 30 w(unsafe)p 1679 3159 V 29 w(enter)p 1928 3159
V 29 w(char)p 2133 3159 V 30 w(2\(s48)p 2383 3159 V 29
w(call)p 2588 3159 V 30 w(t,)g(long\))p Black 755 3259
a Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 3259
V 30 w(unsafe)p 1693 3259 V 29 w(extract)p 2030 3259
V 28 w(integer)p 2366 3259 V 29 w(2\(s48)p 2615 3259
V 29 w(call)p 2820 3259 V 30 w(t,)41 b(s48)p 3111 3259
V 30 w(ref)p 3273 3259 V 30 w(t\))p Black 755 3359 a
Fn(\017)p Black 42 w Fo(long)247 b(s48)p 1399 3359 V
30 w(unsafe)p 1693 3359 V 29 w(extract)p 2030 3359 V
28 w(double)p 2322 3359 V 29 w(2\(s48)p 2571 3359 V 30
w(call)p 2777 3359 V 29 w(t,)41 b(s48)p 3067 3359 V 30
w(ref)p 3229 3359 V 30 w(t\))p Black 755 3500 a Fn(\017)p
Black 42 w Fo(long)247 b(s48)p 1399 3500 V 30 w(unsafe)p
1693 3500 V 29 w(extract)p 2030 3500 V 28 w(fixnum)p
2322 3500 V 29 w(2\(s48)p 2571 3500 V 30 w(call)p 2777
3500 V 29 w(t,)41 b(s48)p 3067 3500 V 30 w(ref)p 3229
3500 V 30 w(t\))p Black 755 3600 a Fn(\017)p Black 42
w Fo(s48)p 976 3600 V 30 w(ref)p 1138 3600 V 30 w(t)g(s48)p
1385 3600 V 30 w(unsafe)p 1679 3600 V 29 w(enter)p 1928
3600 V 29 w(fixnum)p 2221 3600 V 29 w(2\(s48)p 2470 3600
V 29 w(call)p 2675 3600 V 30 w(t,)g(long\))p Black 755
3742 a Fn(\017)p Black 42 w Fo(s48)p 976 3742 V 30 w(ref)p
1138 3742 V 30 w(t)g(s48)p 1385 3742 V 30 w(unsafe)p
1679 3742 V 29 w(car)p 1840 3742 V 30 w(2\(s48)p 2090
3742 V 29 w(call)p 2295 3742 V 30 w(t,)g(s48)p 2586 3742
V 30 w(ref)p 2748 3742 V 30 w(t\))p Black 755 3841 a
Fn(\017)p Black 42 w Fo(s48)p 976 3841 V 30 w(ref)p 1138
3841 V 30 w(t)g(s48)p 1385 3841 V 30 w(unsafe)p 1679
3841 V 29 w(cdr)p 1840 3841 V 30 w(2\(s48)p 2090 3841
V 29 w(call)p 2295 3841 V 30 w(t,)g(s48)p 2586 3841 V
30 w(ref)p 2748 3841 V 30 w(t\))p Black 755 3941 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 3941 V 30 w(unsafe)p
1693 3941 V 29 w(set)p 1854 3941 V 30 w(car)p 2016 3941
V 30 w(2\(s48)p 2266 3941 V 30 w(call)p 2472 3941 V 29
w(t,)41 b(s48)p 2762 3941 V 30 w(ref)p 2924 3941 V 30
w(t,)g(s48)p 3215 3941 V 30 w(ref)p 3377 3941 V 30 w(t\))p
Black 755 4041 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p
1399 4041 V 30 w(unsafe)p 1693 4041 V 29 w(set)p 1854
4041 V 30 w(cdr)p 2016 4041 V 30 w(2\(s48)p 2266 4041
V 30 w(call)p 2472 4041 V 29 w(t,)41 b(s48)p 2762 4041
V 30 w(ref)p 2924 4041 V 30 w(t,)g(s48)p 3215 4041 V
30 w(ref)p 3377 4041 V 30 w(t\))p Black 755 4182 a Fn(\017)p
Black 42 w Fo(long)247 b(s48)p 1399 4182 V 30 w(unsafe)p
1693 4182 V 29 w(vector)p 1986 4182 V 29 w(length)p 2279
4182 V 29 w(2\(s48)p 2528 4182 V 29 w(call)p 2733 4182
V 30 w(t,)40 b(s48)p 3023 4182 V 31 w(ref)p 3186 4182
V 30 w(t\))p Black 755 4282 a Fn(\017)p Black 42 w Fo(s48)p
976 4282 V 30 w(ref)p 1138 4282 V 30 w(t)h(s48)p 1385
4282 V 30 w(unsafe)p 1679 4282 V 29 w(vector)p 1972 4282
V 29 w(ref)p 2133 4282 V 30 w(2\(s48)p 2383 4282 V 29
w(call)p 2588 4282 V 30 w(t,)g(s48)p 2879 4282 V 30 w(ref)p
3041 4282 V 30 w(t,)g(long\))p Black 755 4382 a Fn(\017)p
Black 42 w Fo(void)247 b(s48)p 1399 4382 V 30 w(unsafe)p
1693 4382 V 29 w(vector)p 1986 4382 V 29 w(set)p 2147
4382 V 30 w(2\(s48)p 2397 4382 V 29 w(call)p 2602 4382
V 30 w(t,)41 b(s48)p 2893 4382 V 30 w(ref)p 3055 4382
V 30 w(t,)g(long,)e(s48)p 3605 4382 V 30 w(ref)p 3767
4382 V 30 w(t\))p Black 755 4523 a Fn(\017)p Black 42
w Fo(long)247 b(s48)p 1399 4523 V 30 w(unsafe)p 1693
4523 V 29 w(string)p 1986 4523 V 29 w(length)p 2279 4523
V 29 w(2\(s48)p 2528 4523 V 29 w(call)p 2733 4523 V 30
w(t,)40 b(s48)p 3023 4523 V 31 w(ref)p 3186 4523 V 30
w(t\))p Black 755 4623 a Fn(\017)p Black 42 w Fo(char)247
b(s48)p 1399 4623 V 30 w(unsafe)p 1693 4623 V 29 w(string)p
1986 4623 V 29 w(ref)p 2147 4623 V 30 w(2\(s48)p 2397
4623 V 29 w(call)p 2602 4623 V 30 w(t,)41 b(s48)p 2893
4623 V 30 w(ref)p 3055 4623 V 30 w(t,)g(long\))p Black
755 4723 a Fn(\017)p Black 42 w Fo(void)247 b(s48)p 1399
4723 V 30 w(unsafe)p 1693 4723 V 29 w(string)p 1986 4723
V 29 w(set)p 2147 4723 V 30 w(2\(s48)p 2397 4723 V 29
w(call)p 2602 4723 V 30 w(t,)41 b(s48)p 2893 4723 V 30
w(ref)p 3055 4723 V 30 w(t,)g(long,)e(char\))p Black
755 4864 a Fn(\017)p Black 42 w Fo(s48)p 976 4864 V 30
w(ref)p 1138 4864 V 30 w(t)i(s48)p 1385 4864 V 30 w(unsafe)p
1679 4864 V 29 w(symbol)p 1972 4864 V 29 w(to)p 2089
4864 V 30 w(string)p 2383 4864 V 29 w(2\(s48)p 2632 4864
V 30 w(call)p 2838 4864 V 29 w(t,)g(s48)p 3128 4864 V
30 w(ref)p 3290 4864 V 30 w(t\))p Black 755 5006 a Fn(\017)p
Black 42 w Fo(char)e(*)166 b(s48)p 1401 5006 V 30 w(unsafe)p
1695 5006 V 29 w(extract)p 2032 5006 V 29 w(byte)p 2237
5006 V 29 w(vector)p 2530 5006 V 29 w(2\(s48)p 2779 5006
V 29 w(call)p 2984 5006 V 30 w(t,)41 b(s48)p 3275 5006
V 30 w(ref)p 3437 5006 V 30 w(t\))p Black 2109 5255 a
Fr(126)p Black eop end
%%Page: 127 135
TeXDict begin 127 134 bop 0 TeXcolorgray Black Black
Black Black 307 523 a Fn(\017)p Black 41 w Fo(long)248
b(s48)p 951 523 27 4 v 30 w(unsafe)p 1245 523 V 29 w(byte)p
1450 523 V 29 w(vector)p 1743 523 V 29 w(length)p 2036
523 V 29 w(2\(s48)p 2285 523 V 29 w(call)p 2490 523 V
30 w(t,)41 b(s48)p 2781 523 V 30 w(ref)p 2943 523 V 30
w(t\))p Black 307 623 a Fn(\017)p Black 41 w Fo(char)248
b(s48)p 951 623 V 30 w(unsafe)p 1245 623 V 29 w(byte)p
1450 623 V 29 w(vector)p 1743 623 V 29 w(ref)p 1904 623
V 30 w(2\(s48)p 2154 623 V 30 w(call)p 2360 623 V 29
w(t,)41 b(s48)p 2650 623 V 30 w(ref)p 2812 623 V 30 w(t,)g(long\))p
Black 307 722 a Fn(\017)p Black 41 w Fo(void)248 b(s48)p
951 722 V 30 w(unsafe)p 1245 722 V 29 w(byte)p 1450 722
V 29 w(vector)p 1743 722 V 29 w(set)p 1904 722 V 30 w(2\(s48)p
2154 722 V 30 w(call)p 2360 722 V 29 w(t,)41 b(s48)p
2650 722 V 30 w(ref)p 2812 722 V 30 w(t,)g(long,)f(int\))415
875 y Fr(Additionally)19 b(to)f(not)g(p)r(erforming)g(t)n(yp)r(e)g(c)n
(hec)n(ks,)h(the)g(p)r(oin)n(ter)f(returned)g(b)n(y)h
Fo(s48)p 2964 875 V 31 w(unsafe)p 3259 875 V 28 w(extract)p
3595 875 V 29 w(byte)p 3800 875 V 30 w(vector)p 4094
875 V 29 w(2)291 974 y Fr(will)26 b(lik)n(ely)g(b)r(ecome)g(in)n(v)-5
b(alid)26 b(when)h(a)f(garbage)e(collection)i(o)r(ccurs.)35
b(See)27 b(section)p 0 0 1 TeXcolorrgb(8.7.3)p Black
24 w(on)291 1074 y(ho)n(w)g(the)h(in)n(terface)e(deals)h(with)i(b)n
(yte)e(v)n(ectors)f(in)i(a)f(prop)r(er)g(w)n(a)n(y)-7
b(.)p Black 307 1226 a Fn(\017)p Black 41 w Fo(s48)p
527 1226 V 30 w(ref)p 689 1226 V 30 w(t)42 b(s48)p 937
1226 V 30 w(unsafe)p 1231 1226 V 29 w(shared)p 1524 1226
V 29 w(binding)p 1861 1226 V 28 w(ref)p 2021 1226 V 30
w(2\(s48)p 2271 1226 V 29 w(call)p 2476 1226 V 30 w(t,)f(s48)p
2767 1226 V 30 w(ref)p 2929 1226 V 30 w(t)g(s)p 3088
1226 V 31 w(b\))p Black 307 1326 a Fn(\017)p Black 41
w Fo(int)290 b(s48)p 949 1326 V 30 w(unsafe)p 1243 1326
V 29 w(shared)p 1536 1326 V 28 w(binding)p 1872 1326
V 29 w(p)p 1945 1326 V 31 w(2\(s48)p 2196 1326 V 29 w(call)p
2401 1326 V 30 w(t,)41 b(x\))p Black 307 1425 a Fn(\017)p
Black 41 w Fo(int)290 b(s48)p 949 1425 V 30 w(unsafe)p
1243 1425 V 29 w(shared)p 1536 1425 V 28 w(binding)p
1872 1425 V 29 w(is)p 1989 1425 V 31 w(import)p 2284
1425 V 28 w(p)p 2356 1425 V 31 w(2\(s48)p 2607 1425 V
30 w(call)p 2813 1425 V 29 w(t,)41 b(s48)p 3103 1425
V 30 w(ref)p 3265 1425 V 30 w(t)g(s)p 3424 1425 V 31
w(b\))p Black 307 1525 a Fn(\017)p Black 41 w Fo(s48)p
527 1525 V 30 w(ref)p 689 1525 V 30 w(t)h(s48)p 937 1525
V 30 w(unsafe)p 1231 1525 V 29 w(shared)p 1524 1525 V
29 w(binding)p 1861 1525 V 28 w(name)p 2065 1525 V 30
w(2\(s48)p 2315 1525 V 29 w(call)p 2520 1525 V 30 w(t,)e(s48)p
2810 1525 V 31 w(ref)p 2973 1525 V 30 w(t)h(s)p 3132
1525 V 31 w(b\))p Black 307 1625 a Fn(\017)p Black 41
w Fo(void)248 b(s48)p 951 1625 V 30 w(unsafe)p 1245 1625
V 29 w(shared)p 1538 1625 V 29 w(binding)p 1875 1625
V 28 w(set)p 2035 1625 V 30 w(2\(s48)p 2285 1625 V 29
w(call)p 2490 1625 V 30 w(t,)41 b(s48)p 2781 1625 V 30
w(ref)p 2943 1625 V 30 w(t)g(s)p 3102 1625 V 31 w(b,)g(s48)p
3394 1625 V 30 w(ref)p 3556 1625 V 30 w(t)g(value\))p
Black 307 1776 a Fn(\017)p Black 41 w Fo(s48)p 527 1776
V 30 w(ref)p 689 1776 V 30 w(t)h(s48)p 937 1776 V 30
w(unsafe)p 1231 1776 V 29 w(record)p 1524 1776 V 29 w(type)p
1729 1776 V 29 w(2\(s48)p 1978 1776 V 30 w(call)p 2184
1776 V 29 w(t,)f(s48)p 2474 1776 V 30 w(ref)p 2636 1776
V 30 w(t\))p Black 307 1876 a Fn(\017)p Black 41 w Fo(s48)p
527 1876 V 30 w(ref)p 689 1876 V 30 w(t)h(s48)p 937 1876
V 30 w(unsafe)p 1231 1876 V 29 w(record)p 1524 1876 V
29 w(ref)p 1685 1876 V 30 w(2\(s48)p 1935 1876 V 29 w(call)p
2140 1876 V 30 w(t,)e(s48)p 2430 1876 V 31 w(ref)p 2593
1876 V 30 w(t,)g(long\))p Black 307 1975 a Fn(\017)p
Black 41 w Fo(void)248 b(s48)p 951 1975 V 30 w(unsafe)p
1245 1975 V 29 w(record)p 1538 1975 V 29 w(set)p 1699
1975 V 30 w(2\(s48)p 1949 1975 V 29 w(call)p 2154 1975
V 30 w(t,)40 b(s48)p 2444 1975 V 31 w(ref)p 2607 1975
V 30 w(t,)g(long,)g(s48)p 3157 1975 V 30 w(ref)p 3319
1975 V 30 w(t\))p Black 307 2127 a Fn(\017)p Black 41
w Fo(type)248 b(s48)p 951 2127 V 30 w(unsafe)p 1245 2127
V 29 w(extract)p 1582 2127 V 28 w(value)p 1830 2127 V
29 w(2\(s48)p 2079 2127 V 30 w(call)p 2285 2127 V 29
w(t,)41 b(s48)p 2575 2127 V 30 w(ref)p 2737 2127 V 30
w(t,)g(type\))p Black 307 2226 a Fn(\017)p Black 41 w
Fo(type)f(*)166 b(s48)p 953 2226 V 30 w(unsafe)p 1247
2226 V 29 w(extract)p 1584 2226 V 28 w(value)p 1832 2226
V 30 w(pointer)p 2170 2226 V 28 w(2\(s48)p 2418 2226
V 29 w(call)p 2623 2226 V 30 w(t,)41 b(s48)p 2914 2226
V 30 w(ref)p 3076 2226 V 30 w(t,)g(type\))p Black 307
2326 a Fn(\017)p Black 41 w Fo(void)248 b(s48)p 951 2326
V 30 w(unsafe)p 1245 2326 V 29 w(set)p 1406 2326 V 30
w(value)p 1656 2326 V 29 w(2\(s48)p 1905 2326 V 29 w(call)p
2110 2326 V 30 w(t,)41 b(s48)p 2401 2326 V 30 w(ref)p
2563 2326 V 30 w(t,)g(type,)e(value\))291 2606 y Fj(8.12)135
b(Con)l(v)l(erting)32 b(external)f(co)t(de)f(to)g(the)g(new)g(foreign-)
664 2755 y(function)45 b(in)l(terface)291 2939 y Fr(It)30
b(is)g(straigh)n(tforw)n(ard)c(to)k(con)n(v)n(ert)f(external)g(co)r(de)
g(from)h(the)g(old)g(foreign-function)f(in-)291 3038
y(terface)e(to)g(the)h(new)g(foreign-function)f(in)n(terface:)p
Black 415 3225 a Fn(\017)p Black 41 w Fr(Con)n(v)n(erting)f(functions:)
p Black 592 3395 a Fm({)p Black 41 w Fr(Add)i Fo(s48)p
1000 3395 V 30 w(call)42 b(call)25 b Fr(as)i(a)g(\014rst)g(argumen)n(t)
f(to)h(ev)n(ery)f(function)i(protot)n(yp)r(e)681 3494
y(that)g(returns)f(or)f(accepts)h(a)g Fo(s48)p 1746 3494
V 31 w(value)p Fr(.)p Black 592 3629 a Fm({)p Black 41
w Fr(Replace)19 b(ev)n(ery)g Fo(s48)p 1332 3629 V 30
w(value)e Fr(t)n(yp)r(e)j(in)f(the)h(function)g(protot)n(yp)r(e)e(and)h
(the)h(b)r(o)r(dy)681 3729 y(with)28 b Fo(s48)p 1007
3729 V 30 w(ref)p 1169 3729 V 30 w(t)p Fr(.)p Black 592
3864 a Fm({)p Black 41 w Fr(Add)d Fo(call)e Fr(as)h(the)h(\014rst)f
(argumen)n(t)f(to)i(ev)n(ery)e(function)i(call)f(that)h(returns)f(or)
681 3963 y(accepts)j(a)g(Sc)n(heme)h(ob)5 b(ject.)p Black
592 4098 a Fm({)p Black 41 w Fr(Remo)n(v)n(e)17 b(all)h(the)h
Fo(GCPROTECT)p Fr(-related)14 b(co)r(de)k(\(i.e.)34 b
Fo(GCPROTECT)15 b Fr(and)j Fo(UNPROTECT)p Fr(\).)p Black
415 4268 a Fn(\017)p Black 41 w Fr(Con)n(v)n(erting)26
b(global)g(\(static\))i(v)-5 b(ariables:)p Black 592
4438 a Fm({)p Black 41 w Fr(Replace)32 b Fo(s48)p 1133
4438 V 30 w(value)f Fr(t)n(yp)r(e)i(of)g(the)g(global)f(v)-5
b(ariable)31 b(with)j Fo(s48)p 2747 4438 V 30 w(ref)p
2909 4438 V 30 w(t)p Fr(,)g(ini-)681 4537 y(tialize)27
b(these)h(v)-5 b(ariables)26 b(with)i Fo(NULL)p Fr(.)p
Black 592 4672 a Fm({)p Black 41 w Fr(Set)33 b(a)f(real)f(Sc)n(heme)i
(ob)5 b(ject)32 b(in)h(the)g(initialization)f(function)h(of)g(y)n(our)e
(co)r(de)681 4772 y(with)d(one)f(of)h(these)f(alternativ)n(es:)p
Black 753 4907 a Fn(\003)p Black 41 w Fr(Use)38 b Fo(s48)p
1143 4907 V 30 w(make)p 1349 4907 V 30 w(global)p 1643
4907 V 29 w(ref)e Fr(to)i(con)n(v)n(ert)e(a)h Fo(s48)p
2466 4907 V 30 w(value)f Fr(to)i(a)f(global)836 5006
y(reference.)f(F)-7 b(or)27 b(details)g(and)h(an)f(example)g(see)g
(section)p 0 0 1 TeXcolorrgb 28 w(8.7.1)p Black(.)p Black
1660 5255 a(127)p Black eop end
%%Page: 128 136
TeXDict begin 128 135 bop 0 TeXcolorgray Black Black
Black Black 1201 523 a Fn(\003)p Black 41 w Fr(Use)20
b Fo(s48)p 1573 523 27 4 v 30 w(local)p 1823 523 V 30
w(to)p 1941 523 V 30 w(global)p 2235 523 V 29 w(ref)f
Fr(to)g(con)n(v)n(ert)g(a)g(lo)r(cal)h(reference)e(ob)5
b(ject)1284 623 y(to)28 b(a)f(global)f(one.)p Black 1201
739 a Fn(\003)p Black 41 w Fr(If)g(y)n(our)e(global)g(v)-5
b(ariable)24 b(is)h(supp)r(osed)g(to)g(hold)g(a)g(shared)f(binding)h
(\(e.g.)1284 839 y(an)18 b(record)f(t)n(yp)r(e)i(binding\),)i(y)n(ou)c
(can)h(use)g Fo(s48)p 2722 839 V 31 w(get)p 2885 839
V 30 w(imported)p 3267 839 V 28 w(binding)p 3603 839
V 28 w(2)1284 938 y Fr(that)28 b(returns)f(a)g(global)g(reference.)p
Black 1040 1071 a Fm({)p Black 41 w Fr(Replace)k Fo(S48)p
1580 1071 V 30 w(GC)p 1698 1071 V 30 w(PROTECT)p 2036
1071 V 29 w(GLOBAL)d Fr(with)k Fo(s48)p 2682 1071 V 30
w(local)p 2932 1071 V 29 w(to)p 3049 1071 V 31 w(global)p
3344 1071 V 29 w(ref)d Fr(to)1129 1171 y(con)n(v)n(ert)d(a)h(lo)r(cal)g
(reference)g(ob)5 b(ject)27 b(to)h(a)f(global)g(one.)p
Black 1040 1303 a Fm({)p Black 41 w Fr(Use)j Fo(s48)p
1428 1303 V 30 w(free)p 1634 1303 V 29 w(global)p 1927
1303 V 29 w(ref)f Fr(to)g(clean)n(up)g(global)g(references)f(when)i
(appro-)1129 1403 y(priate.)739 1586 y(If)23 b(y)n(ou)f(add)h
Fo(#define)41 b(NO_OLD_FFI)e(1)23 b Fr(just)g(ab)r(o)n(v)n(e)f
Fo(#include)40 b(<scheme48.h>)18 b Fr(in)23 b(y)n(our)739
1685 y(source)k(co)r(de)h(\014le,)h(it)f(will)h(hide)f(all)g(the)h
(macros)e(and)h(protot)n(yp)r(e)f(de\014nitions)i(of)f(the)g(old)739
1785 y(foreign-function)c(in)n(terface.)35 b(That)25
b(w)n(a)n(y)f(y)n(ou)g(can)h(mak)n(e)f(sure)h(that)g(y)n(ou)f(are)g
(only)h(using)739 1885 y(the)j(new)g(in)n(terface)e(and)i(the)g(C)g
(compiler)e(will)i(remind)g(y)n(ou)f(if)h(y)n(ou)f(don't.)p
Black 2109 5255 a(128)p Black eop end
%%Page: 129 137
TeXDict begin 129 136 bop 0 TeXcolorgray Black Black
Black 291 1146 a Fl(Chapter)64 b(9)291 1561 y Fp(Access)77
b(to)h(POSIX)291 1993 y Fr(This)27 b(c)n(hapter)g(describ)r(es)g(Sc)n
(heme)g(48's)g(in)n(terface)g(to)h(the)g(POSIX)f(C)g(calls)g([)p
0 0 1 TeXcolorrgb(1)p Black(].)37 b(Sc)n(heme)291 2093
y(v)n(ersions)20 b(of)j(most)g(of)f(the)h(functions)g(in)g(POSIX)g(are)
e(pro)n(vided.)34 b(Both)23 b(the)g(in)n(terface)f(and)291
2192 y(implemen)n(tation)h(are)f(new)i(and)f(are)f(lik)n(ely)h(to)g(c)n
(hange)g(in)g(future)h(releases.)34 b(Section)p 0 0 1
TeXcolorrgb 23 w(9.12)p Black 291 2292 a(lists)27 b(whic)n(h)h(Sc)n
(heme)f(functions)h(call)f(whic)n(h)h(C)f(functions.)415
2392 y(Sc)n(heme)33 b(48's)g(POSIX)f(in)n(terface)h(will)h(lik)n(ely)f
(c)n(hange)f(signi\014can)n(tly)g(in)i(the)f(future.)291
2492 y(The)27 b(implemen)n(tation)h(is)f(new)h(and)f(ma)n(y)g(ha)n(v)n
(e)g(signi\014can)n(t)g(bugs.)415 2591 y(The)h(POSIX)f(bindings)g(are)g
(a)n(v)-5 b(ailable)26 b(in)i(sev)n(eral)e(structures:)p
Black Black 771 2770 a Fo(posix-processes)224 b Fr(fork,)27
b(exec,)h(and)f(friends)771 2869 y Fo(posix-process-dat)o(a)93
b Fr(information)27 b(ab)r(out)h(pro)r(cesses)771 2969
y Fo(posix-files)400 b Fr(\014les)28 b(and)f(directories)771
3069 y Fo(posix-i/o)488 b Fr(op)r(erations)27 b(on)g(p)r(orts)771
3168 y Fo(posix-time)444 b Fr(time)28 b(functions)771
3268 y Fo(posix-users)400 b Fr(users)27 b(and)h(groups)771
3368 y Fo(posix-regexps)312 b Fr(regular)26 b(expression)g(matc)n(hing)
771 3467 y Fo(posix-syslog)356 b Fr(POSIX)27 b(logging)f(facilit)n(y)
771 3567 y Fo(posix-errnos)356 b Fr(POSIX)27 b(error)f(co)r(des)771
3666 y Fo(posix)664 b Fr(all)28 b(of)f(the)h(ab)r(o)n(v)n(e)415
3851 y(Sc)n(heme)37 b(48's)f(POSIX)h(in)n(terface)g(di\013ers)g(from)g
(Scsh's)g([)p 0 0 1 TeXcolorrgb(11)p Black -1 w(,)p 0 0 1
TeXcolorrgb 37 w(12)p Black -1 w(])g(in)h(sev)n(eral)d(w)n(a)n(ys.)291
3950 y(The)e(in)n(terface)g(here)g(lac)n(ks)g(Scsh's)g(high-lev)n(el)f
(constructs)h(and)h(utilities,)h(suc)n(h)f(as)f(the)291
4050 y(pro)r(cess)27 b(notation,)h Fo(awk)f Fr(pro)r(cedure,)h(and)g
(parsing)f(utilities.)40 b(Sc)n(heme)29 b(48)e(uses)h(distinct)291
4150 y(t)n(yp)r(es)34 b(for)g(some)g(v)-5 b(alues)34
b(that)h(Scsh)g(lea)n(v)n(es)e(as)g(sym)n(b)r(ols)h(or)g(un)n(b)r(o)n
(xed)g(in)n(tegers;)j(these)291 4249 y(include)30 b(\014le)f(t)n(yp)r
(es,)i(\014le)e(mo)r(des,)i(and)e(user)g(and)h(group)e(ids.)43
b(Man)n(y)29 b(of)h(the)g(names)f(and)291 4349 y(other)e(in)n(terface)g
(details)g(are)f(di\013eren)n(t,)i(as)f(w)n(ell.)291
4625 y Fj(9.1)135 b(Pro)t(cess)45 b(primitiv)l(es)291
4807 y Fr(The)31 b(pro)r(cedures)g(describ)r(ed)g(in)h(this)g(section)f
(con)n(trol)f(the)i(creation)e(of)i(pro)r(cesses)e(and)291
4907 y(the)40 b(execution)g(of)f(programs.)72 b(They)40
b(are)f(in)h(the)g(structures)f Fo(posix-process)c Fr(and)291
5006 y Fo(posix)p Fr(.)p Black 1660 5255 a(129)p Black
eop end
%%Page: 130 138
TeXDict begin 130 137 bop 0 TeXcolorgray Black Black
Black 739 523 a Fe(9.1.1)112 b(Pro)s(cess)38 b(creation)f(and)i
(termination)p Black 755 676 a Fn(\017)p Black 42 w Fo(\(fork\))g
Fn(!)i Fq(pr)l(o)l(c)l(ess-id)i(or)f Fo(#f)p Black 755
776 a Fn(\017)p Black 42 w Fo(\(fork-and-forge)o(t)35
b Fq(thunk)9 b Fo(\))739 920 y(Fork)22 b Fr(creates)g(a)i(new)f(c)n
(hild)h(pro)r(cess)e(and)i(returns)e(the)i(c)n(hild's)g(pro)r(cess-id)e
(in)i(the)g(paren)n(t)739 1020 y(and)g Fo(#f)f Fr(in)i(the)f(c)n(hild.)
36 b Fo(Fork-and-forget)18 b Fr(calls)24 b Fq(thunk)32
b Fr(in)25 b(a)e(new)i(pro)r(cess;)f(no)g(pro)r(cess-)739
1120 y(id)f(is)g(returned.)35 b Fo(Fork-and-forget)17
b Fr(uses)23 b(an)g(in)n(termediate)g(pro)r(cess)f(to)h(a)n(v)n(oid)e
(creating)739 1219 y(a)27 b(zom)n(bie)g(pro)r(cess.)p
Black 755 1364 a Fn(\017)p Black 42 w Fo(\(process-id?)45
b Fq(x)10 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)p Black
755 1463 a Fn(\017)p Black 42 w Fo(\(process-id=?)i Fq(pr)l(o)l(c)l
(ess-id0)f(pr)l(o)l(c)l(ess-id1)11 b Fo(\))43 b Fn(!)e
Fq(b)l(o)l(ole)l(an)p Black 755 1563 a Fn(\017)p Black
42 w Fo(\(process-id->in)o(te)o(ger)35 b Fq(pr)l(o)l(c)l(ess-id)9
b Fo(\))41 b Fn(!)h Fq(inte)l(ger)p Black 755 1663 a
Fn(\017)p Black 42 w Fo(\(integer->proce)o(ss)o(-id)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)g Fq(pr)l(o)l(c)l(ess-id)739
1807 y Fo(Process-id?)57 b Fr(is)36 b(a)g(predicate)f(for)g(pro)r
(cess-ids,)i Fo(process-id=?)57 b Fr(compares)34 b(t)n(w)n(o)h(to)739
1907 y(see)42 b(if)h(they)f(are)g(the)g(same,)k(and)c
Fo(process-id-uid)37 b Fr(returns)42 b(the)g(actual)g(Unix)h(id.)739
2006 y Fo(Process-id->inte)o(ge)o(r)28 b Fr(and)34 b
Fo(integer->proces)o(s-i)o(d)28 b Fr(con)n(v)n(ert)k(pro)r(cess)h(ids)h
(to)f(and)739 2106 y(from)27 b(in)n(tegers.)p Black 755
2250 a Fn(\017)p Black 42 w Fo(\(process-id-exi)o(t-)o(sta)o(tu)o(s)36
b Fq(pr)l(o)l(c)l(ess-id)9 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)f(or)h
Fo(#f)p Black 755 2350 a Fn(\017)p Black 42 w Fo(\(process-id-ter)o(mi)
o(nat)o(in)o(g-s)o(ig)o(nal)35 b Fq(pr)l(o)l(c)l(ess-id)9
b Fo(\))41 b Fn(!)h Fq(signal)g(or)g Fo(#f)p Black 755
2450 a Fn(\017)p Black 42 w Fo(\(wait-for-child)o(-p)o(roc)o(es)o(s)36
b Fq(pr)l(o)l(c)l(ess-id)9 b Fo(\))739 2594 y Fr(If)29
b(a)g(pro)r(cess)f(terminates)g(normally)h Fo(process-id-exit-s)o(ta)o
(tus)22 b Fr(will)29 b(return)g(its)g(exit)739 2694 y(status.)86
b(If)45 b(the)g(pro)r(cess)e(is)h(still)g(running)g(or)f(w)n(as)h
(terminated)g(b)n(y)g(a)f(signal)h(then)739 2793 y Fo(process-id-exit-)
o(st)o(atu)o(s)38 b Fr(will)44 b(return)f Fo(#f)p Fr(.)85
b(Similarly)-7 b(,)48 b(if)c(a)g(c)n(hild)g(pro)r(cess)e(w)n(as)739
2893 y(terminated)29 b(b)n(y)g(a)f(signal)h Fo(process-id-term)o(ina)o
(ti)o(ng-)o(si)o(gn)o(al)23 b Fr(will)29 b(return)g(that)g(sig-)739
2993 y(nal)36 b(and)g(will)g(return)g Fo(#f)g Fr(if)g(the)h(pro)r(cess)
e(is)h(still)h(running)f(or)f(terminated)h(normally)-7
b(.)739 3092 y Fo(Wait-for-child-p)o(ro)o(ces)o(s)18
b Fr(blo)r(c)n(ks)23 b(un)n(til)h(the)g(c)n(hild)g(pro)r(cess)f
(terminates.)35 b(Sc)n(heme)24 b(48)739 3192 y(ma)n(y)29
b(reap)f(c)n(hild)i(pro)r(cesses)e(b)r(efore)h(the)h(user)e(requests)h
(their)g(exit)h(status,)g(but)g(it)g(do)r(es)739 3292
y(not)d(alw)n(a)n(ys)f(do)h(so.)p Black 755 3436 a Fn(\017)p
Black 42 w Fo(\(exit)39 b Fq(status)7 b Fo(\))739 3581
y Fr(T)-7 b(erminates)27 b(the)h(curren)n(t)f(pro)r(cess)f(with)i(the)g
(in)n(teger)f Fq(status)33 b Fr(as)27 b(its)h(exit)g(status.)739
3812 y Fe(9.1.2)112 b Fb(Exec)p Black 755 3965 a Fn(\017)p
Black 42 w Fo(\(exec)39 b Fq(pr)l(o)l(gr)l(am-name)j(ar)l(g0)g(.)13
b(.)g(.)g Fo(\))p Black 755 4065 a Fn(\017)p Black 42
w Fo(\(exec-with-envi)o(ro)o(nme)o(nt)35 b Fq(pr)l(o)l(gr)l(am-name)42
b(env)g(ar)l(g0)g(.)13 b(.)g(.)g Fo(\))p Black 755 4164
a Fn(\017)p Black 42 w Fo(\(exec-file)37 b Fq(\014lename)42
b(ar)l(g0)g(.)13 b(.)g(.)g Fo(\))p Black 755 4264 a Fn(\017)p
Black 42 w Fo(\(exec-file-with)o(-e)o(nvi)o(ro)o(nme)o(nt)35
b Fq(\014lename)42 b(env)f(ar)l(g0)i(.)13 b(.)g(.)g Fo(\))p
Black 755 4364 a Fn(\017)p Black 42 w Fo(\(exec-with-alia)o(s)35
b Fq(name)42 b(lo)l(okup?)52 b(mayb)l(e-env)42 b(ar)l(guments)7
b Fo(\))739 4508 y Fr(All)34 b(of)f(these)g(replace)f(the)i(curren)n(t)
e(program)g(with)h(a)g(new)g(one.)54 b(They)33 b(di\013er)g(in)h(ho)n
(w)739 4608 y(the)39 b(new)g(program)e(is)i(found,)j(what)d(its)h(en)n
(vironmen)n(t)e(is,)j(and)e(what)g(argumen)n(ts)f(it)739
4707 y(is)j(passed.)77 b Fo(Exec)39 b Fr(and)i Fo(exec-with-environ)o
(men)o(t)35 b Fr(lo)r(ok)41 b(up)g(the)h(new)f(program)e(in)739
4807 y(the)31 b(searc)n(h)e(path,)j(while)f Fo(exec-file)c
Fr(and)k Fo(exec-file-with-en)o(vi)o(ro)o(nme)o(nt)24
b Fr(execute)739 4907 y(a)39 b(particular)f(\014le.)72
b(The)39 b(en)n(vironmen)n(t)g(is)g(either)g(inherited)g(from)g(the)h
(curren)n(t)e(pro-)739 5006 y(cess)25 b(\()p Fo(exec)f
Fr(and)i Fo(exec-file)p Fr(\))c(or)j(giv)n(en)g(as)g(an)g(argumen)n(t)g
(\()p Fo(...-with-environ)o(men)o(t)p Fr(\).)p Black
2109 5255 a(130)p Black eop end
%%Page: 131 139
TeXDict begin 131 138 bop 0 TeXcolorgray Black Black
Black 291 523 a Fq(Pr)l(o)l(gr)l(am-name)35 b Fr(and)28
b Fq(\014lename)35 b Fr(and)28 b(an)n(y)h Fq(ar)l(g)1785
535 y Fa(i)1841 523 y Fr(should)g(b)r(e)f Fq(os-string-thing)36
b Fr(argumen)n(ts)291 623 y(\(see)26 b(section)p 0 0 1
TeXcolorrgb 26 w(5.15)p Black(.)36 b Fq(Env)f Fr(should)27
b(b)r(e)g(a)f(list)h(of)f Fq(os-string-thing)34 b Fr(argumen)n(ts)26
b(of)g(the)h(form)291 722 y Fo(")p Fq(name)6 b Fo(=)p
Fq(value)g Fo(")p Fr(.)64 b(The)36 b(\014rst)h(four)f(pro)r(cedures)f
(add)i(their)f(\014rst)h(argumen)n(t,)g Fq(pr)l(o)l(gr)l(am-)291
822 y(name)d Fr(or)26 b Fq(\014lename)6 b Fr(,)29 b(b)r(efore)e(the)h
Fq(ar)l(g0)i(.)13 b(.)g(.)51 b Fr(argumen)n(ts.)415 957
y Fo(Exec-with-alias)29 b Fr(is)34 b(an)g(omnibus)h(pro)r(cedure)e
(that)i(subsumes)f(the)h(other)f(four.)291 1056 y Fq(Name)28
b Fr(is)22 b(lo)r(ok)n(ed)f(up)h(in)g(the)g(searc)n(h)f(path)h(if)29
b Fq(lo)l(okup?)46 b Fr(is)22 b(true)g(and)g(is)f(used)h(as)g(a)f
(\014lename)291 1156 y(otherwise.)39 b Fq(Mayb)l(e-env)g
Fr(is)29 b(either)g(a)f(list)i(of)e Fq(os-string-thing)8
b Fr(s)28 b(for)h(the)g(en)n(vironmen)n(t)f(of)291 1256
y(the)e(new)g(program)e(or)h Fo(#f)g Fr(in)h(whic)n(h)g(case)g(the)g
(new)g(program)e(inherits)i(its)g(en)n(vironmen)n(t)291
1355 y(from)21 b(the)g(curren)n(t)g(one.)34 b Fq(A)n(r)l(guments)27
b Fr(should)21 b(b)r(e)h(a)f(list)g(of)h Fq(os-string-thing)7
b Fr(s;)23 b(unlik)n(e)e(with)291 1455 y(the)26 b(other)g(four)g(pro)r
(cedures,)f Fq(name)33 b Fr(is)26 b(not)h(added)f(to)g(this)h(list)f
(\(hence)h Fo(-with-alias)p Fr(\).)291 1916 y Fj(9.2)135
b(Signals)291 2164 y Fr(There)31 b(are)g(t)n(w)n(o)g(v)-5
b(arieties)31 b(of)h(signals)e(a)n(v)-5 b(ailable,)32
b Fq(name)l(d)g Fr(and)g Fq(anonymous)p Fr(.)50 b(A)32
b(named)291 2264 y(signal)24 b(is)h(one)f(for)h(whic)n(h)g(w)n(e)g(ha)n
(v)n(e)f(a)g(sym)n(b)r(olic)h(name,)g(suc)n(h)g(as)f
Fo(kill)g Fr(or)g Fo(pipe)p Fr(.)35 b(Anon)n(y-)291 2363
y(mous)40 b(signals,)k(for)c(whic)n(h)i(w)n(e)e(only)h(ha)n(v)n(e)f
(the)i(curren)n(t)e(op)r(erating)g(system's)h(signal)291
2463 y(n)n(um)n(b)r(er,)30 b(ha)n(v)n(e)e(no)i(meaning)f(in)h(other)f
(op)r(erating)g(systems.)42 b(Named)30 b(signals)f(preserv)n(e)291
2562 y(their)g(meaning)g(in)g(image)g(\014les.)41 b(Not)30
b(all)f(named)g(signals)f(are)g(a)n(v)-5 b(ailable)28
b(from)h(all)g(OS's)291 2662 y(and)e(there)g(ma)n(y)g(b)r(e)h(m)n
(ultiple)g(names)g(for)f(a)g(single)g(OS)g(signal)g(n)n(um)n(b)r(er.)p
Black 307 2917 a Fn(\017)p Black 41 w Fo(\(signal)39
b Fq(signal-name)6 b Fo(\))28 b Fn(!)g Fq(signal)1352
b Fr(syn)n(tax)p Black 307 3017 a Fn(\017)p Black 41
w Fo(\(name->signal)36 b Fq(symb)l(ol)9 b Fo(\))42 b
Fn(!)f Fq(signal)i(or)f Fo(#f)p Black 307 3117 a Fn(\017)p
Black 41 w Fo(\(integer->signal)35 b Fq(inte)l(ger)9
b Fo(\))41 b Fn(!)h Fq(signal)p Black 307 3216 a Fn(\017)p
Black 41 w Fo(\(signal?)47 b Fq(x)10 b Fo(\))40 b Fn(!)i
Fq(b)l(o)l(ole)l(an)p Black 307 3316 a Fn(\017)p Black
41 w Fo(\(signal-name)37 b Fq(signal)9 b Fo(\))41 b Fn(!)h
Fq(symb)l(ol)g(or)g Fo(#f)p Black 307 3415 a Fn(\017)p
Black 41 w Fo(\(signal-os-number)35 b Fq(signal)9 b Fo(\))41
b Fn(!)h Fq(inte)l(ger)p Black 307 3515 a Fn(\017)p Black
41 w Fo(\(signal=?)k Fq(signal0)d(signal1)11 b Fo(\))43
b Fn(!)f Fq(b)l(o)l(ole)l(an)291 3770 y Fr(The)18 b(syn)n(tax)f
Fo(signal)f Fr(returns)i(a)g(\(named\))h(signal)e(asso)r(ciated)g(with)
i Fq(signal-name)6 b Fr(.)35 b Fo(Name->signal)291 3870
y Fr(returns)29 b(a)i(\(named\))g(signal)e(or)h Fo(#f)g
Fr(if)h(the)g(the)g(signal)f Fq(name)37 b Fr(is)30 b(not)h(supp)r
(orted)f(b)n(y)h(the)291 3969 y(op)r(erating)c(system.)41
b(The)29 b(signal)f(returned)g(b)n(y)i Fo(integer->signal)23
b Fr(is)29 b(a)f(named)h(signal)291 4069 y(if)36 b Fq(inte)l(ger)j
Fr(corresp)r(onds)27 b(to)j(a)f(named)g(signal)g(in)h(the)g(curren)n(t)
e(op)r(erating)h(system;)h(oth-)291 4169 y(erwise)25
b(it)i(returns)f(an)g(anon)n(ymous)f(signal.)36 b Fo(Signal-name)22
b Fr(returns)k(a)g(sym)n(b)r(ol)g(if)34 b Fq(signal)291
4268 y Fr(is)24 b(named)g(and)g Fo(#f)f Fr(if)i(it)g(is)f(anon)n
(ymous.)34 b Fo(Signal=?)e Fr(returns)24 b Fo(#t)f Fr(if)32
b Fq(signal0)k Fr(and)24 b Fq(signal1)291 4368 y Fr(ha)n(v)n(e)i(the)i
(same)f(op)r(erating)g(system)g(n)n(um)n(b)r(er)g(and)h
Fo(#f)e Fr(if)j(they)e(do)h(not.)291 4787 y Fe(9.2.1)112
b(POSIX)37 b(signals)291 5006 y Fr(The)27 b(follo)n(wing)g(lists)g(the)
h(names)f(of)h(the)g(POSIX)f(signals.)p Black 1660 5255
a(131)p Black eop end
%%Page: 132 140
TeXDict begin 132 139 bop 0 TeXcolorgray Black Black
Black Black Black 789 601 a Fo(abrt)98 b Fr(ab)r(ort)27
b(-)g(abnormal)f(termination)h(\(as)h(b)n(y)f(ab)r(ort\(\)\))789
701 y Fo(alrm)98 b Fr(alarm)26 b(-)h(timeout)i(signal)d(\(as)h(b)n(y)h
(alarm\(\)\))789 800 y Fo(fpe)142 b Fr(\015oating)26
b(p)r(oin)n(t)i(exception)789 900 y Fo(hup)142 b Fr(hangup)27
b(-)g(hangup)g(on)h(con)n(trolling)e(terminal)h(or)g(death)g(of)h(con)n
(trolling)e(pro)r(cess)789 1000 y Fo(ill)142 b Fr(illegal)27
b(instruction)789 1099 y Fo(int)142 b Fr(in)n(terrupt)27
b(-)g(in)n(teraction)g(atten)n(tion)789 1199 y Fo(kill)98
b Fr(kill)27 b(-)h(termination)f(signal,)g(cannot)g(b)r(e)h(caugh)n(t)f
(or)f(ignored)789 1298 y Fo(pipe)98 b Fr(pip)r(e)28 b(-)f(write)h(on)f
(a)g(pip)r(e)h(with)g(no)g(readers)789 1398 y Fo(quit)98
b Fr(quit)28 b(-)f(in)n(teraction)g(termination)789 1498
y Fo(segv)98 b Fr(segmen)n(tation)26 b(violation)h(-)g(in)n(v)-5
b(alid)28 b(memory)e(reference)789 1597 y Fo(term)98
b Fr(termination)27 b(-)g(termination)h(signal)789 1697
y Fo(usr1)98 b Fr(user1)26 b(-)i(for)f(use)g(b)n(y)g(applications)789
1797 y Fo(usr2)98 b Fr(user2)26 b(-)i(for)f(use)g(b)n(y)g(applications)
789 1896 y Fo(chld)98 b Fr(c)n(hild)27 b(-)h(c)n(hild)f(pro)r(cess)g
(stopp)r(ed)h(or)e(terminated)789 1996 y Fo(cont)98 b
Fr(con)n(tin)n(ue)27 b(-)g(con)n(tin)n(ue)g(if)h(stopp)r(ed)789
2095 y Fo(stop)98 b Fr(stop)27 b(-)g(cannot)g(b)r(e)i(caugh)n(t)d(or)h
(ignored)789 2195 y Fo(tstp)98 b Fr(in)n(teractiv)n(e)26
b(stop)789 2295 y Fo(ttin)98 b Fr(read)26 b(from)i(con)n(trol)e
(terminal)h(attempted)i(b)n(y)e(bac)n(kground)e(pro)r(cess)789
2394 y Fo(ttou)98 b Fr(write)27 b(to)h(con)n(trol)e(terminal)h
(attempted)h(b)n(y)g(bac)n(kground)d(pro)r(cess)789 2494
y Fo(bus)142 b Fr(bus)27 b(error)f(-)h(access)g(to)g(unde\014ned)h(p)r
(ortion)g(of)f(memory)739 2718 y Fe(9.2.2)112 b(Other)38
b(signals)739 2871 y Fr(The)j(follo)n(wing)g(lists)g(the)h(names)f(of)g
(the)h(non-POSIX)e(signals)h(that)g(the)h(system)f(is)739
2970 y(curren)n(tly)27 b(a)n(w)n(are)e(of.)1312 3222
y Fo(trap)185 b Fr(trace)27 b(or)g(breakp)r(oin)n(t)f(trap)1312
3322 y Fo(iot)229 b Fr(IOT)27 b(trap)h(-)f(a)g(synon)n(ym)g(for)g(ABR)
-7 b(T)1312 3422 y Fo(emt)1312 3521 y(sys)229 b Fr(bad)28
b(argumen)n(t)e(to)i(routine)f(\(SVID\))1312 3621 y Fo(stkflt)97
b Fr(stac)n(k)27 b(fault)h(on)f(copro)r(cessor)1312 3720
y Fo(urg)229 b Fr(urgen)n(t)27 b(condition)g(on)h(so)r(c)n(k)n(et)e
(\(4.2)h(BSD\))1312 3820 y Fo(io)273 b Fr(I/O)27 b(no)n(w)g(p)r
(ossible)g(\(4.2)g(BSD\))1312 3920 y Fo(poll)185 b Fr(A)28
b(synon)n(ym)f(for)g(SIGIO)g(\(System)h(V\))1312 4019
y Fo(cld)229 b Fr(A)28 b(synon)n(ym)f(for)g(SIGCHLD)1312
4119 y Fo(xcpu)185 b Fr(CPU)28 b(time)g(limit)g(exceeded)f(\(4.2)g
(BSD\))1312 4219 y Fo(xfsz)185 b Fr(File)28 b(size)f(limit)i(exceeded)e
(\(4.2)g(BSD\))1312 4318 y Fo(vtalrm)97 b Fr(Virtual)28
b(alarm)e(clo)r(c)n(k)h(\(4.2)g(BSD\))1312 4418 y Fo(prof)185
b Fr(Pro\014le)27 b(alarm)f(clo)r(c)n(k)1312 4517 y Fo(pwr)229
b Fr(P)n(o)n(w)n(er)25 b(failure)j(\(System)g(V\))1312
4617 y Fo(info)185 b Fr(A)28 b(synon)n(ym)f(for)g(SIGPWR)1312
4717 y Fo(lost)185 b Fr(File)28 b(lo)r(c)n(k)f(lost)1312
4816 y Fo(winch)141 b Fr(Windo)n(w)28 b(resize)e(signal)h(\(4.3)g(BSD,)
h(Sun\))1312 4916 y Fo(unused)97 b Fr(Un)n(used)28 b(signal)p
Black 2109 5255 a(132)p Black eop end
%%Page: 133 141
TeXDict begin 133 140 bop 0 TeXcolorgray Black Black
Black Black Black 291 771 a Fe(9.2.3)112 b(Sending)39
b(signals)p Black 307 926 a Fn(\017)p Black 41 w Fo(\(signal-process)d
Fq(pr)l(o)l(c)l(ess-id)42 b(signal)9 b Fo(\))291 1084
y Fr(Send)28 b Fq(signal)37 b Fr(to)27 b(the)h(pro)r(cess)f(corresp)r
(onding)e(to)j Fq(pr)l(o)l(c)l(ess-id)9 b Fr(.)291 1332
y Fe(9.2.4)112 b(Receiving)38 b(signals)291 1490 y Fr(Signals)25
b(receiv)n(ed)g(b)n(y)g(the)i(Sc)n(heme)e(pro)r(cess)g(can)h(b)r(e)g
(obtained)g(via)f(one)h(or)f(more)g(signal-)291 1590
y(queues.)34 b(Eac)n(h)20 b(signal)g(queue)h(has)f(a)h(list)g(of)g
(monitored)g(signals)f(and)g(a)h(queue)g(of)g(receiv)n(ed)291
1690 y(signals)d(that)h(ha)n(v)n(e)f(y)n(et)i(to)f(b)r(e)g(read)g(from)
g(the)h(signal-queue.)32 b(When)20 b(the)g(Sc)n(heme)f(pro)r(cess)291
1789 y(receiv)n(es)25 b(a)i(signal)g(that)g(signal)g(is)g(added)g(to)g
(the)h(receiv)n(ed-signal)d(queues)i(of)g(all)g(signal-)291
1889 y(queues)g(whic)n(h)g(are)g(curren)n(tly)g(monitoring)f(that)i
(particular)e(signal.)p Black 307 2047 a Fn(\017)p Black
41 w Fo(\(make-signal-queu)o(e)35 b Fq(signals)7 b Fo(\))42
b Fn(!)g Fq(signal-queue)p Black 307 2146 a Fn(\017)p
Black 41 w Fo(\(signal-queue?)i Fq(x)10 b Fo(\))41 b
Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2246 a Fn(\017)p
Black 41 w Fo(\(signal-queue-mon)o(it)o(ore)o(d-)o(si)o(gna)o(ls)35
b Fq(signal-queue)6 b Fo(\))42 b Fn(!)f Fq(list)h(of)g(signals)p
Black 307 2346 a Fn(\017)p Black 41 w Fo(\(dequeue-signal!)i
Fq(signal-queue)6 b Fo(\))41 b Fn(!)h Fq(signal)p Black
307 2445 a Fn(\017)p Black 41 w Fo(\(maybe-dequeue-si)o(gn)o(al!)h
Fq(signal-queue)6 b Fo(\))42 b Fn(!)f Fq(signal)i(or)f
Fo(#f)291 2603 y(Make-signal-que)o(ue)18 b Fr(returns)23
b(a)h(new)g(signal-queue)e(that)j(will)f(monitor)f(the)i(signals)e(in)
291 2703 y(the)18 b(list)h Fq(signals)7 b Fr(.)35 b Fo(Signal-queue?)28
b Fr(is)18 b(a)g(predicate)g(for)g(signal)f(queues.)34
b Fo(Signal-queue-mon)o(it)o(or)o(ed-)o(si)o(gna)o(ls)291
2803 y Fr(returns)17 b(a)h(list)h(of)f(the)h(signals)e(curren)n(tly)g
(monitored)h(b)n(y)h Fq(signal-queue)6 b Fr(.)35 b Fo(Dequeue-signal!)
291 2902 y Fr(and)i Fo(maybe-dequeue-s)o(ign)o(al)31
b Fr(b)r(oth)37 b(return)g(the)h(next)f(receiv)n(ed-but-unread)f
(signal)291 3002 y(from)21 b Fq(signal-queue)6 b Fr(.)35
b(If)28 b Fq(signal-queue)6 b Fr('s)22 b(queue)f(of)g(signals)f(is)i
(empt)n(y)g Fo(dequeue-signal!)291 3101 y Fr(blo)r(c)n(ks)32
b(un)n(til)i(an)g(appropriate)d(signal)i(is)h(receiv)n(ed.)53
b Fo(Maybe-dequeue-sig)o(na)o(l!)48 b Fr(do)r(es)291
3201 y(not)27 b(blo)r(c)n(k;)g(it)h(returns)f Fo(#f)g
Fr(instead.)415 3304 y(There)22 b(is)h(a)f(bug)h(in)g(the)g(curren)n(t)
f(system)h(that)g(causes)f(an)g(erroneous)f(deadlo)r(c)n(k)h(error)291
3403 y(if)29 b(threads)g(are)f(blo)r(c)n(k)n(ed)h(w)n(aiting)f(for)h
(signals)f(and)h(no)g(other)g(threads)g(are)f(a)n(v)-5
b(ailable)28 b(to)291 3503 y(run.)59 b(A)35 b(w)n(ork)f(around)g(is)h
(to)g(create)f(a)g(thread)h(that)g(sleeps)g(for)f(a)h(long)f(time,)k
(whic)n(h)291 3602 y(prev)n(en)n(ts)26 b(an)n(y)h(deadlo)r(c)n(k)f
(errors)g(\(including)i(real)f(ones\):)p Black Black
291 3780 a Fo(>)43 b(,open)e(threads)291 3879 y(>)i(\(spawn)e(\(lambda)
g(\(\))770 3979 y(;)i(Sleep)f(for)g(a)h(year)770 4079
y(\(sleep)e(\(*)i(1000)f(60)h(60)f(24)h(365\)\)\)\))p
Black 307 4250 a Fn(\017)p Black 41 w Fo(\(add-signal-queue)o(-s)o(ign)
o(al)o(!)35 b Fq(signal-queue)42 b(signal)9 b Fo(\))p
Black 307 4350 a Fn(\017)p Black 41 w Fo(\(remove-signal-qu)o(eu)o(e-s)
o(ig)o(na)o(l!)35 b Fq(signal-queue)42 b(signal)9 b Fo(\))291
4508 y Fr(These)40 b(t)n(w)n(o)h(pro)r(cedures)f(can)g(b)r(e)i(used)f
(to)g(add)g(or)f(remo)n(v)n(e)g(signals)g(from)g(a)h(signal-)291
4608 y(queue's)f(list)g(of)h(monitored)e(signals.)74
b(When)41 b(a)f(signal)f(is)h(remo)n(v)n(ed)f(from)h(a)g(signal-)291
4707 y(queue's)26 b(list)h(of)f(monitored)g(signals)f(an)n(y)h(o)r
(ccurances)f(of)h(the)h(signal)f(are)f(remo)n(v)n(ed)g(from)291
4807 y(that)38 b(signal-queue's)f(p)r(ending)i(signals.)68
b(In)38 b(other)g(w)n(ords,)i Fo(dequeue-signal!)63 b
Fr(and)291 4907 y Fo(maybe-dequeue-s)o(ign)o(al)o(!)71
b Fr(will)41 b(only)f(return)g(signals)g(that)h(are)f(curren)n(tly)g
(on)h(the)291 5006 y(signal-queue's)26 b(list)h(of)h(signals.)p
Black 1660 5255 a(133)p Black eop end
%%Page: 134 142
TeXDict begin 134 141 bop 0 TeXcolorgray Black Black
Black 739 523 a Fj(9.3)135 b(Pro)t(cess)45 b(en)l(vironmen)l(t)739
705 y Fr(These)27 b(are)g(in)h(structures)e Fo(posix-process-dat)o(a)c
Fr(and)27 b Fo(posix)p Fr(.)739 935 y Fe(9.3.1)112 b(Pro)s(cess)38
b(iden)m(ti\014cation)p Black 755 1089 a Fn(\017)p Black
42 w Fo(\(get-process-id)o(\))d Fn(!)83 b Fq(pr)l(o)l(c)l(ess-id)p
Black 755 1188 a Fn(\017)p Black 42 w Fo(\(get-parent-pro)o(ce)o(ss-)o
(id)o(\))36 b Fn(!)83 b Fq(pr)l(o)l(c)l(ess-id)739 1329
y Fr(These)37 b(return)f(the)h(pro)r(cess)f(ids)h(of)g(the)g(curren)n
(t)f(pro)r(cess)g(and)h(its)g(paren)n(t.)64 b(See)37
b(sec-)739 1429 y(tion)p 0 0 1 TeXcolorrgb 28 w(9.1.1)p
Black 26 w(for)27 b(op)r(erations)f(on)i(pro)r(cess)e(ids.)p
Black 755 1570 a Fn(\017)p Black 42 w Fo(\(get-user-id\))36
b Fn(!)83 b Fq(user-id)p Black 755 1670 a Fn(\017)p Black
42 w Fo(\(get-effective-)o(us)o(er-)o(id)o(\))36 b Fn(!)83
b Fq(user-id)p Black 755 1769 a Fn(\017)p Black 42 w
Fo(\(set-user-id!)36 b Fq(user-id)9 b Fo(\))p Black 755
1869 a Fn(\017)p Black 42 w Fo(\(set-effective-)o(us)o(er-)o(id)o(!)36
b Fq(user-id)9 b Fo(\))p Black 755 2010 a Fn(\017)p Black
42 w Fo(\(get-group-id\))35 b Fn(!)83 b Fq(gr)l(oup-id)p
Black 755 2109 a Fn(\017)p Black 42 w Fo(\(get-effective-)o(gr)o(oup)o
(-i)o(d\))35 b Fn(!)83 b Fq(gr)l(oup-id)p Black 755 2209
a Fn(\017)p Black 42 w Fo(\(set-group-id!)35 b Fq(gr)l(oup-id)9
b Fo(\))p Black 755 2309 a Fn(\017)p Black 42 w Fo(\(set-effective-)o
(gr)o(oup)o(-i)o(d!)35 b Fq(gr)l(oup-id)9 b Fo(\))739
2450 y Fr(Ev)n(ery)34 b(pro)r(cess)h(has)g(b)r(oth)i(the)f(original)e
(and)i(e\013ectiv)n(e)g(user)f(id)h(and)g(group)f(id.)62
b(The)739 2549 y(e\013ectiv)n(e)28 b(v)-5 b(alues)28
b(ma)n(y)g(b)r(e)h(set,)g(but)g(the)g(original)d(ones)i(can)g(only)g(b)
r(e)h(set)g(if)g(the)f(pro)r(cess)739 2649 y(has)f(appropriate)f(priv)n
(elages.)p Black 755 2790 a Fn(\017)p Black 42 w Fo(\(get-groups\))36
b Fn(!)83 b Fq(gr)l(oup-ids)p Black 755 2890 a Fn(\017)p
Black 42 w Fo(\(get-login-name)o(\))35 b Fn(!)83 b Fq(os-string)739
3031 y Fo(Get-groups)26 b Fr(returns)k(a)g(list)g(of)h(the)f(supplemen)
n(tary)g(groups)f(of)h(the)h(curren)n(t)e(pro)r(cess.)739
3130 y Fo(Get-login-name)22 b Fr(returns)27 b(a)g(user)g(name)g(for)g
(the)h(curren)n(t)f(pro)r(cess.)739 3361 y Fe(9.3.2)112
b(En)m(vironmen)m(t)38 b(v)-6 b(ariables)p Black 755
3514 a Fn(\017)p Black 42 w Fo(\(lookup-environ)o(me)o(nt-)o(va)o(ria)o
(bl)o(e)35 b Fq(os-string-thing)7 b Fo(\))42 b Fn(!)f
Fq(os-string)h(or)g Fo(#f)p Black 755 3614 a Fn(\017)p
Black 42 w Fo(\(set-environmen)o(t-)o(var)o(ia)o(ble)o(!)35
b Fq(name)42 b(value)6 b Fo(\))p Black 755 3713 a Fn(\017)p
Black 42 w Fo(\(environment-al)o(is)o(t\))35 b Fn(!)42
b Fq(alist)739 3854 y Fo(Lookup-environme)o(nt)o(-va)o(ri)o(abl)o(e)23
b Fr(lo)r(oks)28 b(up)h(its)g(argumen)n(t)f(in)i(the)f(en)n(vironmen)n
(t)f(list)739 3954 y(and)18 b(returns)g(the)h(corresp)r(onding)d(v)-5
b(alue)18 b(or)g Fo(#f)f Fr(if)i(there)f(is)h(none.)33
b Fo(Set-environment-v)o(ar)o(ia)o(ble)o(!)739 4054 y
Fr(sets)28 b(the)h(v)-5 b(alue)29 b(of)35 b Fo(name)27
b Fr(in)i(the)g(en)n(vironmen)n(t)f(list)g(to)h Fo(value)p
Fr(.)38 b(If)d Fo(name)28 b Fr(is)g(not)h(already)739
4153 y(an)g(en)n(vironmen)n(t)f(v)-5 b(ariable,)29 b(it's)g(created.)41
b(If)30 b(it)g(already)d(exists,)j(its)f(v)-5 b(alue)29
b(is)h(o)n(v)n(erwrit-)739 4253 y(ten)23 b(with)f Fo(value)p
Fr(.)33 b(Both)22 b(argumen)n(ts)f(m)n(ust)i(b)r(e)f(os-string-things.)
33 b Fo(Environment-alist)739 4352 y Fr(returns)23 b(the)i(en)n(tire)e
(en)n(vironmen)n(t)g(as)h(a)f(list)h(of)31 b Fo(\()p
Fq(name-os-string)50 b Fo(.)87 b Fq(value-os-string)7
b Fo(\))739 4452 y Fr(pairs.)739 4725 y Fj(9.4)135 b(Users)46
b(and)e(groups)739 4907 y Fq(User-id)9 b Fr(s)28 b(and)g
Fq(gr)l(oup-id)9 b Fr(s)29 b(are)f(b)r(o)n(xed)g(in)n(tegers)f
(represen)n(ting)g(Unix)i(users)e(and)i(groups.)739 5006
y(The)f(pro)r(cedures)e(in)i(this)g(section)f(are)f(in)i(structures)f
Fo(posix-users)c Fr(and)28 b Fo(posix)p Fr(.)p Black
2109 5255 a(134)p Black eop end
%%Page: 135 143
TeXDict begin 135 142 bop 0 TeXcolorgray Black Black
Black Black 307 523 a Fn(\017)p Black 41 w Fo(\(user-id?)46
b Fq(x)10 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black
307 623 a Fn(\017)p Black 41 w Fo(\(user-id=?)k Fq(user-id0)c(user-id1)
11 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 307
722 a Fn(\017)p Black 41 w Fo(\(user-id->integer)35 b
Fq(user-id)9 b Fo(\))41 b Fn(!)g Fq(inte)l(ger)p Black
307 822 a Fn(\017)p Black 41 w Fo(\(integer->user-id)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)g Fq(user-id)p Black
307 960 a Fn(\017)p Black 41 w Fo(\(group-id?)46 b Fq(x)10
b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 307 1060
a Fn(\017)p Black 41 w Fo(\(group-id=?)46 b Fq(gr)l(oup-id0)d(gr)l
(oup-id1)11 b Fo(\))42 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 307 1160 a Fn(\017)p Black 41 w Fo(\(group-id->intege)o(r)35
b Fq(gr)l(oup-id)9 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p
Black 307 1259 a Fn(\017)p Black 41 w Fo(\(integer->group-i)o(d)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)h Fq(gr)l(oup-id)291
1398 y Fr(User-ids)26 b(and)h(group-ids)f(ha)n(v)n(e)h(their)g(o)n(wn)g
(o)n(wn)g(predicates)f(and)i(comparison,)e(b)r(o)n(xing,)291
1497 y(and)h(un)n(b)r(o)n(xing)g(functions.)p Black 307
1636 a Fn(\017)p Black 41 w Fo(\(user-id->user-in)o(fo)35
b Fq(user-id)9 b Fo(\))41 b Fn(!)g Fq(user-info)p Black
307 1735 a Fn(\017)p Black 41 w Fo(\(name->user-info)35
b Fq(os-string)7 b Fo(\))41 b Fn(!)h Fq(user-info)291
1874 y Fr(These)27 b(return)g(the)h(user)f(info)h(for)f(a)g(user)g
(iden)n(ti\014ed)h(b)n(y)f(user-id)g(or)g(name.)p Black
307 2012 a Fn(\017)p Black 41 w Fo(\(user-info?)46 b
Fq(x)10 b Fo(\))40 b Fn(!)83 b Fq(b)l(o)l(ole)l(an)p
Black 307 2112 a Fn(\017)p Black 41 w Fo(\(user-info-name)36
b Fq(user-info)5 b Fo(\))41 b Fn(!)83 b Fq(os-string)p
Black 307 2211 a Fn(\017)p Black 41 w Fo(\(user-info-id)36
b Fq(user-info)5 b Fo(\))42 b Fn(!)83 b Fq(user-id)p
Black 307 2311 a Fn(\017)p Black 41 w Fo(\(user-info-group)35
b Fq(user-info)5 b Fo(\))42 b Fn(!)83 b Fq(gr)l(oup-id)p
Black 307 2411 a Fn(\017)p Black 41 w Fo(\(user-info-home-d)o(ir)o(ect)
o(or)o(y)35 b Fq(user-info)5 b Fo(\))42 b Fn(!)83 b Fq(os-string)p
Black 307 2510 a Fn(\017)p Black 41 w Fo(\(user-info-shell)35
b Fq(user-info)5 b Fo(\))42 b Fn(!)83 b Fq(os-string)291
2649 y Fr(A)25 b Fo(user-info)c Fr(con)n(tains)i(information)h(ab)r
(out)h(a)f(user.)35 b(Av)-5 b(ailable)25 b(are)e(the)i(user's)f(name,)
291 2748 y(id,)j(group,)g(home)g(directory)-7 b(,)27
b(and)g(shell.)p Black 307 2887 a Fn(\017)p Black 41
w Fo(\(group-id->group-)o(in)o(fo)35 b Fq(gr)l(oup-id)9
b Fo(\))42 b Fn(!)f Fq(gr)l(oup-info)p Black 307 2986
a Fn(\017)p Black 41 w Fo(\(name->group-info)35 b Fq(os-string)7
b Fo(\))41 b Fn(!)h Fq(gr)l(oup-info)291 3125 y Fr(These)27
b(return)g(the)h(group)e(info)i(for)f(a)g(group)g(iden)n(ti\014ed)h(b)n
(y)f(group-id)g(or)f(name.)p Black 307 3263 a Fn(\017)p
Black 41 w Fo(\(group-info?)45 b Fq(x)10 b Fo(\))41 b
Fn(!)83 b Fq(b)l(o)l(ole)l(an)p Black 307 3363 a Fn(\017)p
Black 41 w Fo(\(group-info-name)35 b Fq(gr)l(oup-info)5
b Fo(\))43 b Fn(!)83 b Fq(os-string)p Black 307 3462
a Fn(\017)p Black 41 w Fo(\(group-info-id)36 b Fq(gr)l(oup-info)5
b Fo(\))42 b Fn(!)83 b Fq(gr)l(oup-id)p Black 307 3562
a Fn(\017)p Black 41 w Fo(\(group-info-membe)o(rs)35
b Fq(gr)l(oup-info)5 b Fo(\))42 b Fn(!)83 b Fq(user-ids)291
3700 y Fr(A)32 b Fo(group-info)c Fr(con)n(tains)i(information)i(ab)r
(out)f(a)h(group.)48 b(Av)-5 b(ailable)32 b(are)f(the)h(group's)291
3800 y(name,)27 b(id,)h(and)f(a)h(list)f(of)h(mem)n(b)r(ers.)291
4072 y Fj(9.5)135 b(OS)44 b(and)h(mac)l(hine)h(iden)l(ti\014cation)291
4254 y Fr(These)32 b(pro)r(cedures)g(return)h(strings)f(that)h(are)f
(supp)r(osed)h(to)g(iden)n(tify)h(the)f(curren)n(t)f(OS)291
4354 y(and)25 b(mac)n(hine.)36 b(The)26 b(POSIX)f(standard)f(do)r(es)i
(not)f(indicate)h(the)g(format)f(of)h(the)g(strings.)291
4453 y(The)h(pro)r(cedures)g(are)f(in)i(structures)f
Fo(posix-platform-n)o(am)o(es)21 b Fr(and)28 b Fo(posix)p
Fr(.)p Black 307 4592 a Fn(\017)p Black 41 w Fo(\(os-name\))38
b Fn(!)k Fq(string)p Black 307 4691 a Fn(\017)p Black
41 w Fo(\(os-node-name\))36 b Fn(!)41 b Fq(string)p Black
307 4791 a Fn(\017)p Black 41 w Fo(\(os-release-name\))35
b Fn(!)41 b Fq(string)p Black 307 4890 a Fn(\017)p Black
41 w Fo(\(os-version-name\))35 b Fn(!)41 b Fq(string)p
Black 307 4990 a Fn(\017)p Black 41 w Fo(\(machine-name\))36
b Fn(!)41 b Fq(string)p Black 1660 5255 a Fr(135)p Black
eop end
%%Page: 136 144
TeXDict begin 136 143 bop 0 TeXcolorgray Black Black
Black 739 523 a Fj(9.6)135 b(Files)46 b(and)e(directories)739
705 y Fr(These)27 b(pro)r(cedures)g(are)f(in)i(structures)f
Fo(posix-files)c Fr(and)k Fo(posix)p Fr(.)739 936 y Fe(9.6.1)112
b(Directory)37 b(streams)739 1089 y Fr(Directory)29 b(streams)g(are)f
(lik)n(e)i(input)h(p)r(orts,)f(with)g(eac)n(h)f(read)g(op)r(eration)g
(returning)g(the)739 1189 y(next)f(name)f(in)h(the)g(directory)-7
b(.)p Black 755 1333 a Fn(\017)p Black 42 w Fo(\(open-directory)o(-s)o
(tre)o(am)35 b Fq(name)6 b Fo(\))41 b Fn(!)h Fq(dir)l(e)l(ctory)p
Black 755 1433 a Fn(\017)p Black 42 w Fo(\(directory-stre)o(am)o(?)i
Fq(x)10 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black
755 1533 a Fn(\017)p Black 42 w Fo(\(read-directory)o(-s)o(tre)o(am)35
b Fq(dir)l(e)l(ctory)7 b Fo(\))42 b Fn(!)g Fq(name)g(or)g
Fo(#f)p Black 755 1632 a Fn(\017)p Black 42 w Fo(\(close-director)o(y-)
o(str)o(ea)o(m)36 b Fq(dir)l(e)l(ctory)7 b Fo(\))739
1777 y(Open-directory-s)o(tr)o(eam)13 b Fr(op)r(ens)20
b(a)f(new)h(directory)f(stream.)33 b Fo(Directory-stream)o(?)28
b Fr(is)739 1876 y(a)22 b(predicate)g(that)h(recognizes)e(directory)h
(streams.)34 b Fo(Read-directory-s)o(tr)o(eam)16 b Fr(returns)739
1976 y(the)j(next)f(name)g(in)h(the)g(directory)e(or)g
Fo(#f)h Fr(if)h(all)f(names)g(ha)n(v)n(e)f(b)r(een)i(read.)33
b Fo(Close-directory-)o(st)o(re)o(am)739 2076 y Fr(closes)26
b(a)i(directory)e(stream.)p Black 755 2220 a Fn(\017)p
Black 42 w Fo(\(list-directory)35 b Fq(name)6 b Fo(\))41
b Fn(!)h Fq(list)g(of)g(os-strings)739 2364 y Fr(This)27
b(is)h(the)g(ob)n(vious)e(utilit)n(y;)i(it)g(returns)f(a)g(list)h(of)g
(the)g(names)f(in)h(directory)f Fq(name)6 b Fr(.)739
2596 y Fe(9.6.2)112 b(W)-9 b(orking)38 b(directory)p
Black 755 2749 a Fn(\017)p Black 42 w Fo(\(working-direct)o(or)o(y\))d
Fn(!)42 b Fq(os-string)p Black 755 2849 a Fn(\017)p Black
42 w Fo(\(set-working-di)o(re)o(cto)o(ry)o(!)36 b Fq(os-string-thing)7
b Fo(\))739 2993 y Fr(These)27 b(return)g(and)h(set)f(the)h(w)n(orking)
e(directory)-7 b(.)739 3224 y Fe(9.6.3)112 b(File)39
b(creation)e(and)i(remo)m(v)-6 b(al)p Black 755 3378
a Fn(\017)p Black 42 w Fo(\(open-file)37 b Fq(p)l(ath)42
b(\014le-options)7 b Fo(\))42 b Fn(!)f Fq(p)l(ort)p Black
755 3477 a Fn(\017)p Black 42 w Fo(\(open-file)c Fq(p)l(ath)42
b(\014le-options)g(\014le-mo)l(de)6 b Fo(\))42 b Fn(!)g
Fq(p)l(ort)739 3622 y Fo(Open-file)15 b Fr(op)r(ens)j(a)g(p)r(ort)g(to)
g(the)h(\014le)f(named)h(b)n(y)g Fq(p)l(ath)6 b Fr(,)21
b(whic)n(h)e(m)n(ust)f(b)r(e)h(a)f Fq(os-string-thing)739
3721 y Fr(argumen)n(t.)34 b(The)21 b Fq(\014le-options)28
b Fr(argumen)n(t)21 b(determines)f(v)-5 b(arious)20 b(asp)r(ects)h(of)g
(the)h(returned)739 3821 y(p)r(ort.)36 b(The)24 b(optional)h
Fq(\014le-mo)l(de)31 b Fr(argumen)n(t)24 b(is)g(used)h(only)g(if)g(the)
g(\014le)g(to)g(b)r(e)g(op)r(ened)g(do)r(es)739 3920
y(not)34 b(already)f(exist.)58 b(The)35 b(returned)f(p)r(ort)g(is)h(an)
f(input)h(p)r(ort)f(if)42 b Fq(\014le-options)g Fr(includes)739
4020 y Fo(read-only)p Fr(;)28 b(otherwise)h(it)i(returns)e(an)h(output)
h(p)r(ort.)44 b Fo(Dup-switching-mod)o(e)24 b Fr(can)30
b(b)r(e)739 4120 y(used)20 b(to)g(op)r(en)h(an)f(input)h(p)r(ort)f(for)
g(output)h(p)r(orts)f(op)r(ened)h(with)f(the)h Fo(read/write)16
b Fr(option.)p Black 755 4264 a Fn(\017)p Black 42 w
Fo(\(file-options)36 b Fq(\014le-option-name)48 b Fo(...\))26
b Fn(!)i Fq(\014le-options)574 b Fr(syn)n(tax)p Black
755 4364 a Fn(\017)p Black 42 w Fo(\(file-options-o)o(n?)43
b Fq(\014le-options)g(\014le-options)7 b Fo(\))41 b Fn(!)h
Fq(b)l(o)l(ole)l(an)p Black 755 4463 a Fn(\017)p Black
42 w Fo(\(file-options-u)o(ni)o(on)35 b Fq(\014le-options)42
b(\014le-options)7 b Fo(\))42 b Fn(!)g Fq(\014le-options)739
4608 y Fr(The)30 b(syn)n(tax)e Fo(file-options)d Fr(returns)k(a)h
(\014le-option)f(with)h(the)g(indicated)g(options)f(set.)739
4707 y Fo(File-options-on?)h Fr(returns)d(true)g(if)h(its)g(\014rst)f
(argumen)n(t)f(includes)i(all)f(of)g(the)h(options)739
4807 y(listed)j(in)g(the)g(second)g(argumen)n(t.)45 b
Fo(File-options-unio)o(n)25 b Fr(returns)30 b(a)g(\014le-options)g(ar-)
739 4907 y(gumen)n(t)38 b(con)n(taining)e(exactly)h(all)h(of)g(the)g
(options)f(listed)h(in)g(either)g(argumen)n(t.)66 b(The)739
5006 y(follo)n(wing)26 b(\014le)i(options)f(ma)n(y)g(b)r(e)h(used)g
(with)g Fo(open-file)p Fr(.)p Black 2109 5255 a(136)p
Black eop end
%%Page: 137 145
TeXDict begin 137 144 bop 0 TeXcolorgray Black Black
Black Black Black 490 510 a Fo(create)621 b Fr(create)36
b(\014le)h(if)h(it)g(do)r(es)f(not)g(already)f(exist;)42
b(a)37 b(\014le-)1375 609 y(mo)r(de)27 b(argumen)n(t)g(is)g(required)g
(with)h(this)g(option)490 709 y Fo(exclusive)489 b Fr(an)19
b(error)f(will)j(b)r(e)f(raised)f(if)h(this)h(option)e(and)h
Fo(create)1375 809 y Fr(are)26 b(b)r(oth)i(set)g(and)f(the)h(\014le)g
(already)e(exists)490 908 y Fo(no-controlling-tt)o(y)94
b Fr(if)38 b Fq(p)l(ath)g Fr(is)31 b(a)g(terminal)g(device)g(this)h
(option)f(causes)1375 1008 y(the)24 b(terminal)f(to)h(not)f(b)r(ecome)h
(the)g(con)n(trolling)e(ter-)1375 1108 y(minal)27 b(of)h(the)g(pro)r
(cess)490 1207 y Fo(truncate)533 b Fr(\014le)27 b(is)h(truncated)490
1307 y Fo(append)621 b Fr(writes)27 b(are)f(app)r(ended)i(to)g
(existing)f(con)n(ten)n(ts)490 1406 y Fo(nonblocking)401
b Fr(read)26 b(and)i(write)f(op)r(erations)f(do)i(not)f(blo)r(c)n(k)490
1506 y Fo(read-only)489 b Fr(p)r(ort)27 b(ma)n(y)g(not)h(b)r(e)g
(written)490 1606 y Fo(read-write)445 b Fr(\014le)27
b(descriptor)g(ma)n(y)g(b)r(e)h(read)e(or)h(written)490
1705 y Fo(write-only)445 b Fr(p)r(ort)27 b(ma)n(y)g(not)h(b)r(e)g(read)
291 1886 y(Only)g(one)f(of)i(the)f(last)g(three)h(options)e(ma)n(y)h(b)
r(e)h(used.)39 b(If)c Fo(read-write)24 b Fr(is)k(sp)r(eci\014ed,)h(an)
291 1986 y(output)f(p)r(ort)f(is)h(returned.)415 2086
y(F)-7 b(or)27 b(example)p Black Black 291 2254 a Fo(\(open-file)39
b("some-file.txt")770 2353 y(\(file-options)f(create)j(write-only\))770
2453 y(\(file-mode)e(read)j(owner-write\)\))291 2620
y Fr(returns)29 b(an)g(output)i(p)r(ort)f(that)g(writes)f(to)h(a)f
(newly-created)g(\014le)h(that)g(can)g(b)r(e)g(read)f(b)n(y)291
2720 y(an)n(y)n(one)d(and)h(written)h(only)f(b)n(y)g(the)h(o)n(wner.)36
b(Once)27 b(the)h(\014le)g(exists,)p Black Black 291
2888 a Fo(\(open-file)39 b("some-file.txt")770 2988 y(\(file-options)f
(append)j(write-only\)\))291 3155 y Fr(will)27 b(op)r(en)h(an)f(output)
h(p)r(ort)g(that)g(app)r(ends)f(to)h(the)g(\014le.)415
3255 y(The)23 b Fo(append)e Fr(and)i Fo(nonblocking)18
b Fr(options)23 b(and)f(the)i(read/write)d(nature)i(of)g(the)g(p)r(ort)
291 3355 y(can)g(b)r(e)h(read)f(using)i Fo(i/o-flags)p
Fr(.)32 b(The)24 b Fo(append)d Fr(and)j Fo(nonblocking)19
b Fr(options)k(can)h(b)r(e)g(set)291 3454 y(using)k Fo(set-i/o-flags!)p
Fr(.)415 3555 y(T)-7 b(o)27 b(k)n(eep)f(p)r(ort)h(op)r(erations)e(from)
i(blo)r(c)n(king)f(the)h(Sc)n(heme)g(48)f(pro)r(cess,)g(output)h(p)r
(orts)291 3654 y(are)21 b(set)h(to)g(b)r(e)h(non)n(blo)r(c)n(king)e(at)
h(the)h(time)g(of)f(creation)f(\(input)j(p)r(orts)e(are)f(managed)g
(using)291 3754 y Fo(select\(\))p Fr(\).)54 b(Y)-7 b(ou)35
b(can)f(use)g Fo(set-i/o-flags!)52 b Fr(to)34 b(mak)n(e)g(an)g(output)h
(p)r(ort)g(blo)r(c)n(king,)291 3853 y(for)e(example)g(just)i(b)r(efore)
e(a)g(fork,)i(but)f(care)f(should)h(b)r(e)g(exercised.)54
b(The)34 b(Sc)n(heme)g(48)291 3953 y(run)n(time)27 b(co)r(de)h(ma)n(y)e
(get)i(confused)f(if)h(an)g(I/O)e(op)r(eration)h(blo)r(c)n(ks.)p
Black 307 4104 a Fn(\017)p Black 41 w Fo(\(set-file-creatio)o(n-)o(mas)
o(k!)35 b Fq(\014le-mo)l(de)6 b Fo(\))291 4255 y Fr(Sets)29
b(the)h(\014le)f(creation)g(mask)f(to)i(b)r(e)f Fq(\014le-mo)l(de)6
b Fr(.)43 b(Bits)30 b(set)f(in)h Fq(\014le-mo)l(de)36
b Fr(are)28 b(cleared)h(in)291 4354 y(the)f(mo)r(des)f(of)h(an)n(y)e
(\014les)i(or)f(directories)f(created)h(b)n(y)g(the)h(curren)n(t)f(pro)
r(cess.)p Black 307 4505 a Fn(\017)p Black 41 w Fo(\(link)40
b Fq(existing)h(new)9 b Fo(\))291 4656 y Fr(Both)34 b
Fq(existing)41 b Fr(and)34 b Fq(new)44 b Fr(m)n(ust)34
b(b)r(e)h Fq(os-string-thing)41 b Fr(argumen)n(ts.)56
b Fo(Link)33 b Fr(mak)n(es)g(path)291 4756 y Fq(new)k
Fr(b)r(e)28 b(a)g(new)g(link)g(to)g(the)h(\014le)f(p)r(oin)n(ted)g(to)g
(b)n(y)g(path)g Fq(existing)7 b Fr(.)39 b(The)28 b(t)n(w)n(o)g(paths)g
(m)n(ust)291 4855 y(b)r(e)g(in)f(the)h(same)f(\014le)h(system.)p
Black 307 5006 a Fn(\017)p Black 41 w Fo(\(make-directory)36
b Fq(p)l(ath)42 b(\014le-mo)l(de)6 b Fo(\))p Black 1660
5255 a Fr(137)p Black eop end
%%Page: 138 146
TeXDict begin 138 145 bop 0 TeXcolorgray Black Black
Black Black 755 523 a Fn(\017)p Black 42 w Fo(\(make-fifo)37
b Fq(p)l(ath)42 b(\014le-mo)l(de)6 b Fo(\))739 690 y
Fr(These)32 b(t)n(w)n(o)g(pro)r(cedures)f(mak)n(e)h(new)g(directories)f
(and)i(\014fo)f(\014les.)52 b(In)33 b(b)r(oth)f(cases,)h
Fq(p)l(ath)739 790 y Fr(m)n(ust)28 b(b)r(e)g(a)f Fq(os-string-thing)35
b Fr(argumen)n(t.)p Black 755 957 a Fn(\017)p Black 42
w Fo(\(unlink)j Fq(p)l(ath)6 b Fo(\))p Black 755 1056
a Fn(\017)p Black 42 w Fo(\(remove-directo)o(ry)35 b
Fq(p)l(ath)6 b Fo(\))p Black 755 1156 a Fn(\017)p Black
42 w Fo(\(rename)38 b Fq(old-p)l(ath)43 b(new-p)l(ath)6
b Fo(\))739 1323 y Fq(Path)h Fr(,)40 b Fq(old-p)l(ath)46
b Fr(and)37 b Fq(new-p)l(ath)44 b Fr(m)n(ust)38 b(all)f(b)r(e)h
Fq(os-string-thing)45 b Fr(argumen)n(ts.)66 b Fo(Unlink)739
1423 y Fr(remo)n(v)n(es)28 b(the)j(link)g(indicated)f(b)n(y)i
Fq(p)l(ath)6 b Fr(.)46 b Fo(Remove-directory)24 b Fr(remo)n(v)n(es)k
(the)j(indicated)739 1522 y(\(empt)n(y\))c(directory)-7
b(.)35 b Fo(Rename)24 b Fr(mo)n(v)n(es)g(the)j(\014le)f(p)r(oin)n(ted)g
(to)g(b)n(y)h Fq(old-p)l(ath)34 b Fr(to)26 b(the)h(lo)r(cation)739
1622 y(p)r(oin)n(ted)j(to)h(b)n(y)g Fq(new-p)l(ath)37
b Fr(\(the)31 b(t)n(w)n(o)e(paths)i(m)n(ust)f(b)r(e)h(in)f(the)h(same)f
(\014le)g(system\).)45 b(An)n(y)739 1722 y(other)27 b(links)g(to)h(the)
g(\014le)g(remain)f(unc)n(hanged.)p Black 755 1889 a
Fn(\017)p Black 42 w Fo(\(accessible?)45 b Fq(p)l(ath)d(ac)l(c)l
(ess-mo)l(de)g(.)50 b(mor)l(e-mo)l(des)7 b Fo(\))42 b
Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 755 1988 a Fn(\017)p
Black 42 w Fo(\(access-mode)36 b Fq(mo)l(de-name)6 b
Fo(\))28 b Fn(!)g Fq(ac)l(c)l(ess-mo)l(de)930 b Fr(syn)n(tax)739
2155 y Fo(Accessible?)39 b Fr(returns)29 b(true)h(if)36
b Fq(p)l(ath)h Fr(\(whic)n(h)30 b(m)n(ust)g(b)r(e)g(a)g
Fq(os-string-thing)37 b Fr(argumen)n(t\))739 2255 y(is)g(a)f(\014le)i
(that)f(can)g(b)r(e)g(accessed)f(in)h(the)h(listed)f(mo)r(de.)66
b(If)37 b(more)f(than)i(one)e(mo)r(de)h(is)739 2354 y(sp)r(eci\014ed)29
b Fo(accessible?)35 b Fr(returns)27 b(true)i(if)g(all)f(of)g(the)h(sp)r
(eci\014ed)g(mo)r(des)f(are)f(p)r(ermitted.)739 2454
y(The)h Fq(mo)l(de-name)6 b Fr(s)28 b(are:)36 b Fo(read)p
Fr(,)26 b Fo(write)p Fr(,)f Fo(execute)p Fr(,)g Fo(exists)p
Fr(.)739 2718 y Fe(9.6.4)112 b(File)39 b(information)p
Black 755 2876 a Fn(\017)p Black 42 w Fo(\(get-file-info)c
Fq(p)l(ath)6 b Fo(\))42 b Fn(!)g Fq(\014le-info)p Black
755 2976 a Fn(\017)p Black 42 w Fo(\(get-file/link-)o(in)o(fo)35
b Fq(name)6 b Fo(\))42 b Fn(!)f Fq(\014le-info)p Black
755 3075 a Fn(\017)p Black 42 w Fo(\(get-port-info)35
b Fq(fd-p)l(ort)8 b Fo(\))42 b Fn(!)g Fq(\014le-info)739
3242 y Fo(Get-file-info)20 b Fr(and)26 b Fo(get-file/link-inf)o(o)20
b Fr(b)r(oth)26 b(return)f(a)h(\014le)g(info)g(record)e(for)i(the)739
3342 y(\014le)g(named)g(b)n(y)g Fq(p)l(ath)7 b Fr(,)26
b(whic)n(h)g(m)n(ust)h(b)r(e)f(a)g Fq(os-string-thing)33
b Fr(argumen)n(t.)j Fo(Get-file-info)739 3441 y Fr(follo)n(ws)g(sym)n
(b)r(olic)h(links)g(while)h Fo(get-file/link-in)o(fo)31
b Fr(do)r(es)37 b(not.)67 b Fo(Get-port-info)739 3541
y Fr(returns)22 b(a)h(\014le)g(info)g(record)f(for)g(the)i(\014le)f
(whic)n(h)g Fq(p)l(ort)31 b Fr(reads)22 b(from)h(or)f(writes)g(to.)36
b(An)23 b(error)739 3641 y(is)k(raised)g(if)34 b Fq(fd-p)l(ort)j
Fr(do)r(es)27 b(not)h(read)e(from)i(or)e(write)i(to)f(a)g(\014le)h
(descriptor.)p Black 755 3808 a Fn(\017)p Black 42 w
Fo(\(file-info?)45 b Fq(x)10 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p
Black 755 3907 a Fn(\017)p Black 42 w Fo(\(file-info-name)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(os-string)739
4074 y Fo(File-info?)49 b Fr(is)33 b(a)g(predicate)f(for)h(\014le-info)
g(records.)52 b Fo(File-info-name)27 b Fr(is)33 b(the)g(name)739
4174 y(whic)n(h)18 b(w)n(as)g(used)g(to)g(get)g Fo(file-info)p
Fr(,)f(either)h(as)g(passed)f(to)i Fo(get-file-info)13
b Fr(or)k Fo(get-file/link-inf)o(o)p Fr(,)739 4274 y(or)27
b(used)g(to)h(op)r(en)f(the)h(p)r(ort)g(passed)e(to)i
Fo(get-port-info)p Fr(.)p Black 755 4441 a Fn(\017)p
Black 42 w Fo(\(file-info-type)35 b Fq(\014le-info)5
b Fo(\))42 b Fn(!)g Fq(\014le-typ)l(e)p Black 755 4540
a Fn(\017)p Black 42 w Fo(\(file-type?)j Fq(x)10 b Fo(\))41
b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 755 4640 a Fn(\017)p
Black 42 w Fo(\(file-type-name)35 b Fq(\014le-typ)l(e)6
b Fo(\))41 b Fn(!)h Fq(symb)l(ol)p Black 755 4740 a Fn(\017)p
Black 42 w Fo(\(file-type)37 b Fq(typ)l(e)6 b Fo(\))28
b Fn(!)f Fq(\014le-typ)l(e)1437 b Fr(syn)n(tax)739 4907
y Fo(File-info-type)17 b Fr(returns)22 b(the)h(t)n(yp)r(e)f(of)h(the)g
(\014le,)h(as)e(a)g(\014le-t)n(yp)r(e)g(ob)5 b(ject)23
b(File)f(t)n(yp)r(es)h(ma)n(y)739 5006 y(b)r(e)28 b(compared)e(using)j
Fo(eq?)p Fr(.)35 b(The)28 b(v)-5 b(alid)28 b(\014le)g(t)n(yp)r(es)f
(are:)p Black 2109 5255 a(138)p Black eop end
%%Page: 139 147
TeXDict begin 139 146 bop 0 TeXcolorgray Black Black
Black Black Black 1374 510 a Fo(regular)1374 609 y(directory)1374
709 y(character-device)1374 809 y(block-device)1374 908
y(fifo)1374 1008 y(symbolic-link)1374 1108 y(socket)1374
1207 y(other)291 1395 y(Symbolic-link)22 b Fr(and)27
b Fo(socket)e Fr(are)i(not)h(required)e(b)n(y)i(POSIX.)p
Black 307 1551 a Fn(\017)p Black 41 w Fo(\(file-info-device)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p
Black 307 1650 a Fn(\017)p Black 41 w Fo(\(file-info-inode)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(inte)l(ger)291
1806 y Fr(The)27 b(device)h(and)f(ino)r(de)h(n)n(um)n(b)r(ers)f
(uniquely)h(determine)f(a)g(\014le.)p Black 307 1962
a Fn(\017)p Black 41 w Fo(\(file-info-link-c)o(ou)o(nt)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(inte)l(ger)p
Black 307 2062 a Fn(\017)p Black 41 w Fo(\(file-info-size)36
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)291
2218 y Fr(These)27 b(return)g(the)i(n)n(um)n(b)r(er)e(of)h(links)f(to)h
(a)f(\014le)h(and)g(the)g(\014le)g(size)g(in)g(b)n(ytes.)37
b(The)28 b(size)f(is)291 2318 y(only)g(meaningful)g(for)g(regular)f
(\014les.)p Black 307 2474 a Fn(\017)p Black 41 w Fo(\(file-info-owner)
35 b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(user-id)p
Black 307 2573 a Fn(\017)p Black 41 w Fo(\(file-info-group)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(gr)l(oup-id)p
Black 307 2673 a Fn(\017)p Black 41 w Fo(\(file-info-mode)36
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)f Fq(\014le-mo)l(de)291
2829 y Fr(These)27 b(return)g(the)h(o)n(wner,)e(group,)h(and)g(access)g
(mo)r(de)g(of)h(a)f(\014le.)p Black 307 2985 a Fn(\017)p
Black 41 w Fo(\(file-info-last-a)o(cc)o(ess)35 b Fq(\014le-info)5
b Fo(\))42 b Fn(!)f Fq(time)p Black 307 3084 a Fn(\017)p
Black 41 w Fo(\(file-info-last-m)o(od)o(ifi)o(ca)o(ti)o(on)35
b Fq(\014le-info)5 b Fo(\))42 b Fn(!)g Fq(time)p Black
307 3184 a Fn(\017)p Black 41 w Fo(\(file-info-last-s)o(ta)o(tus)o(-c)o
(ha)o(nge)35 b Fq(\014le-info)5 b Fo(\))42 b Fn(!)f Fq(time)291
3340 y Fr(These)21 b(return)g(the)g(time)h(the)g(\014le)g(w)n(as)e
(last)h(read,)h(mo)r(di\014ed,)h(or)d(had)i(its)f(status)g(mo)r
(di\014ed.)291 3584 y Fe(9.6.5)112 b(File)38 b(mo)s(des)291
3741 y Fr(A)28 b(\014le)f(mo)r(de)h(is)f(a)h(b)r(o)n(xed)f(in)n(teger)f
(represen)n(ting)h(a)g(\014le)g(protection)g(mask.)p
Black 307 3897 a Fn(\017)p Black 41 w Fo(\(file-mode)38
b(permission-name)d(...\))26 b Fn(!)i Fq(\014le-mo)l(de)719
b Fr(syn)n(tax)p Black 307 3997 a Fn(\017)p Black 41
w Fo(\(file-mode?)46 b Fq(x)10 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)
p Black 307 4097 a Fn(\017)p Black 41 w Fo(\(file-mode+)37
b Fq(\014le-mo)l(de)42 b(.)13 b(.)g(.)g Fo(\))51 b Fn(!)42
b Fq(\014le-mo)l(de)p Black 307 4196 a Fn(\017)p Black
41 w Fo(\(file-mode-)37 b Fq(\014le-mo)l(de0)43 b(\014le-mo)l(de1)11
b Fo(\))42 b Fn(!)f Fq(\014le-mo)l(de)291 4352 y Fo(File-mode)22
b Fr(is)27 b(syn)n(tax)e(for)h(creating)f(\014le)i(mo)r(des.)36
b(The)27 b(mo)r(de-names)e(are)h(listed)g(b)r(elo)n(w.)291
4452 y Fo(File-mode?)59 b Fr(is)36 b(a)h(predicate)f(for)f(\014le)i(mo)
r(des.)64 b Fo(File-mode+)32 b Fr(returns)k(a)g(mo)r(de)h(that)291
4551 y(con)n(tains)29 b(all)i(of)f(p)r(ermissions)g(of)h(its)f(argumen)
n(ts.)45 b Fo(File-mode-)27 b Fr(returns)j(a)g(mo)r(de)h(that)291
4651 y(has)c(all)g(of)g(the)h(p)r(ermissions)f(of)34
b Fq(\014le-mo)l(de0)40 b Fr(that)28 b(are)f(not)g(in)h
Fq(\014le-mo)l(de1)11 b Fr(.)p Black 307 4807 a Fn(\017)p
Black 41 w Fo(\(file-mode=?)45 b Fq(\014le-mo)l(de0)e(\014le-mo)l(de1)
11 b Fo(\))42 b Fn(!)f Fq(b)l(o)l(ole)l(an)p Black 307
4907 a Fn(\017)p Black 41 w Fo(\(file-mode<=?)k Fq(\014le-mo)l(de0)d
(\014le-mo)l(de1)11 b Fo(\))43 b Fn(!)e Fq(b)l(o)l(ole)l(an)p
Black 307 5006 a Fn(\017)p Black 41 w Fo(\(file-mode>=?)k
Fq(\014le-mo)l(de0)d(\014le-mo)l(de1)11 b Fo(\))43 b
Fn(!)e Fq(b)l(o)l(ole)l(an)p Black 1660 5255 a Fr(139)p
Black eop end
%%Page: 140 148
TeXDict begin 140 147 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(File-mode=?)30 b Fr(returns)18 b(true)i(if)g(the)g
(t)n(w)n(o)f(mo)r(des)g(are)g(exactly)g(the)g(same.)34
b Fo(File-mode<=?)739 623 y Fr(returns)18 b(true)g(if)25
b Fq(\014le-mo)l(de0)31 b Fr(has)18 b(a)g(subset)g(of)g(the)h(p)r
(ermissions)f(of)24 b Fq(\014le-mo)l(de1)11 b Fr(.)35
b Fo(File-mode>=?)739 722 y Fr(is)27 b Fo(file-mode<=?)32
b Fr(with)c(the)g(argumen)n(ts)f(rev)n(ersed.)p Black
755 875 a Fn(\017)p Black 42 w Fo(\(file-mode->int)o(eg)o(er)35
b Fq(\014le-mo)l(de)6 b Fo(\))42 b Fn(!)g Fq(inte)l(ger)p
Black 755 975 a Fn(\017)p Black 42 w Fo(\(integer->file-)o(mo)o(de)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)h Fq(\014le-mo)l(de)739
1128 y Fo(Integer->file-mo)o(de)36 b Fr(and)43 b Fo(file-mode->integ)o
(er)36 b Fr(translate)42 b(\014le)h(mo)r(des)g(to)f(and)739
1227 y(from)e(the)h(classic)f(Unix)h(\014le)g(mo)r(de)g(masks.)75
b(These)41 b(ma)n(y)f(not)g(b)r(e)h(the)g(masks)f(used)739
1327 y(b)n(y)27 b(the)h(underlying)f(OS.)p Black Black
1074 1510 a(P)n(ermission)e(name)100 b(Bit)27 b(mask)1074
1610 y Fo(set-uid)405 b(#o4000)164 b Fr(set)28 b(user)f(id)h(when)g
(executing)1074 1709 y Fo(set-gid)405 b(#o2000)164 b
Fr(set)28 b(group)e(id)i(when)g(executing)1074 1809 y
Fo(owner-read)273 b(#o0400)164 b Fr(read)27 b(b)n(y)g(o)n(wner)1074
1909 y Fo(owner-write)229 b(#o0200)164 b Fr(write)28
b(b)n(y)f(o)n(wner)1074 2008 y Fo(owner-exec)273 b(#o0100)164
b Fr(execute)28 b(\(or)f(searc)n(h\))f(b)n(y)h(o)n(wner)1074
2108 y Fo(group-read)273 b(#o0040)164 b Fr(read)27 b(b)n(y)g(group)1074
2208 y Fo(group-write)229 b(#o0020)164 b Fr(write)28
b(b)n(y)f(group)1074 2307 y Fo(group-exec)273 b(#o0010)164
b Fr(execute)28 b(\(or)f(searc)n(h\))f(b)n(y)h(group)1074
2407 y Fo(other-read)273 b(#o0004)164 b Fr(read)27 b(b)n(y)g(others)
1074 2506 y Fo(other-write)229 b(#o0002)164 b Fr(write)28
b(b)n(y)f(others)1074 2606 y Fo(other-exec)273 b(#o0001)164
b Fr(execute)28 b(\(or)f(searc)n(h\))f(b)n(y)h(others)p
Black Black 1212 2802 a(Names)g(for)g(sets)h(of)f(p)r(ermissions)1212
2901 y Fo(owner)97 b(#o0700)h Fr(read,)26 b(write,)i(and)f(execute)h(b)
n(y)f(o)n(wner)1212 3001 y Fo(group)97 b(#o0070)h Fr(read,)26
b(write,)i(and)f(execute)h(b)n(y)f(group)1212 3101 y
Fo(other)97 b(#o0007)h Fr(read,)26 b(write,)i(and)f(execute)h(b)n(y)f
(others)1212 3200 y Fo(read)141 b(#o0444)98 b Fr(read)26
b(b)n(y)i(an)n(y)n(one)1212 3300 y Fo(write)97 b(#o0222)h
Fr(write)27 b(b)n(y)g(an)n(y)n(one)1212 3400 y Fo(exec)141
b(#o0111)98 b Fr(execute)27 b(b)n(y)g(an)n(y)n(one)1212
3499 y Fo(all)185 b(#o0777)98 b Fr(an)n(ything)27 b(b)n(y)g(an)n(y)n
(one)739 3729 y Fe(9.6.6)112 b(Sym)m(b)s(olic)39 b(links)p
Black 755 3883 a Fn(\017)p Black 42 w Fo(\(create-symboli)o(c-)o(lin)o
(k)c Fq(p)l(ath1)43 b(p)l(ath2)11 b Fo(\))739 4036 y
Fr(This)35 b(creates)e(a)i(sym)n(b)r(olic)f(link)h(at)g
Fq(p)l(ath2)47 b Fr(that)35 b(con)n(tains)f Fq(p)l(ath1)12
b Fr(.)59 b Fq(Path1)47 b Fr(and)35 b Fq(p)l(ath2)739
4136 y Fr(m)n(ust)28 b(b)r(e)g Fq(os-string-thing)35
b Fr(argumen)n(ts.)p Black 755 4289 a Fn(\017)p Black
42 w Fo(\(read-symbolic-)o(li)o(nk)g Fq(p)l(ath)6 b Fo(\))42
b Fn(!)83 b Fq(os-string)739 4442 y Fr(This)18 b(returns)g(con)n(ten)n
(ts)g(of)g(the)h(sym)n(b)r(olic)f(link)g(at)g Fq(p)l(ath)7
b Fr(.)34 b Fq(Path)26 b Fr(m)n(ust)18 b(b)r(e)h(an)f
Fq(os-string-thing)739 4541 y Fr(argumen)n(t.)739 4822
y Fj(9.7)135 b(Time)45 b(and)g(Date)739 5006 y Fr(These)27
b(pro)r(cedures)g(are)f(in)i(structures)f Fo(posix-time)c
Fr(and)28 b Fo(posix)p Fr(.)p Black 2109 5255 a(140)p
Black eop end
%%Page: 141 149
TeXDict begin 141 148 bop 0 TeXcolorgray Black Black
Black 291 523 a Fe(9.7.1)112 b(Time)p Black 307 683 a
Fn(\017)p Black 41 w Fo(\(make-time)38 b Fq(inte)l(ger)9
b Fo(\))41 b Fn(!)g Fq(time)p Black 307 782 a Fn(\017)p
Black 41 w Fo(\(current-time\))36 b Fn(!)41 b Fq(time)p
Black 307 882 a Fn(\017)p Black 41 w Fo(\(time?)48 b
Fq(x)10 b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)p Black
307 981 a Fn(\017)p Black 41 w Fo(\(time-seconds)36 b
Fq(time)6 b Fo(\))42 b Fn(!)f Fq(inte)l(ger)291 1153
y Fr(A)33 b Fo(time)e Fr(record)g(con)n(tains)h(an)g(in)n(teger)g(that)
h(represen)n(ts)e(time)i(as)f(the)i(n)n(um)n(b)r(er)e(of)h(sec-)291
1252 y(ond)g(since)h(the)h(Unix)f(ep)r(o)r(c)n(h)g(\(00:00:00)e(GMT,)i
(Jan)n(uary)e(1,)j(1970\).)55 b Fo(Make-time)30 b Fr(and)291
1352 y Fo(current-time)13 b Fr(return)18 b Fo(time)p
Fr(s,)g(with)h Fo(make-time)p Fr('s)c(using)j(its)g(argumen)n(t)g
(while)g Fo(current-time)p Fr('s)291 1452 y(has)f(the)i(curren)n(t)f
(time.)34 b Fo(Time?)e Fr(is)18 b(a)g(predicate)g(that)g(recognizes)f
Fo(time)p Fr(s)f(and)j Fo(time-seconds)291 1551 y Fr(returns)26
b(the)i(n)n(um)n(b)r(er)g(of)f(seconds)g Fq(time)34 b
Fr(represen)n(ts.)p Black 307 1723 a Fn(\017)p Black
41 w Fo(\(time=?)47 b Fq(time)42 b(time)6 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 1822 a Fn(\017)p
Black 41 w Fo(\(time<?)47 b Fq(time)42 b(time)6 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 1922 a Fn(\017)p
Black 41 w Fo(\(time<=?)47 b Fq(time)42 b(time)6 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2022 a Fn(\017)p
Black 41 w Fo(\(time>?)47 b Fq(time)42 b(time)6 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 307 2121 a Fn(\017)p
Black 41 w Fo(\(time>=?)47 b Fq(time)42 b(time)6 b Fo(\))41
b Fn(!)h Fq(b)l(o)l(ole)l(an)291 2293 y Fr(These)27 b(p)r(erform)g(v)-5
b(arious)26 b(comparison)g(op)r(erations)g(on)i(the)g
Fo(time)p Fr(s.)p Black 307 2464 a Fn(\017)p Black 41
w Fo(\(time->string)36 b Fq(time)6 b Fo(\))42 b Fn(!)f
Fq(string)291 2635 y Fo(Time->string)23 b Fr(returns)k(a)h(string)g
(represen)n(tation)e(of)35 b Fq(time)g Fr(in)28 b(the)h(lo)r(cale's)e
(v)n(ersion)g(of)291 2735 y(the)h(follo)n(wing)e(form.)p
Black Black 291 2930 a Fo("Wed)42 b(Jun)g(30)h(21:49:08)d(1993)291
3030 y(")291 3301 y Fe(9.7.2)112 b(Date)291 3468 y Fr(A)22
b(date)f(is)h(a)f(time)h(sp)r(eci\014cation)f(relativ)n(e)g(to)g(a)g
(sp)r(eci\014c)h(but)g(implicit)h(time)f(zone,)g(brok)n(en)291
3568 y(out)27 b(in)n(to)h(the)g(familar)e(y)n(ear-mon)n(th-da)n
(y-hour-min)n(ute-second)d(format.)p Black 307 3739 a
Fn(\017)p Black 41 w Fo(\(make-date)38 b Fq(se)l(c)l(ond)j(minute)g
(hour)h(month-day)h(month)e(ye)l(ar)h(we)l(ek-day)h(ye)l(ar-day)g(dst)8
b Fo(\))41 b Fn(!)h Fq(date)p Black 307 3839 a Fn(\017)p
Black 41 w Fo(\(date?)48 b Fq(x)10 b Fo(\))40 b Fn(!)i
Fq(b)l(o)l(ole)l(an)p Black 307 3938 a Fn(\017)p Black
41 w Fo(\(date-second)37 b Fq(date)6 b Fo(\))42 b Fn(!)f
Fq(se)l(c)l(ond)p Black 307 4038 a Fn(\017)p Black 41
w Fo(\(date-minute)c Fq(date)6 b Fo(\))42 b Fn(!)f Fq(minute)p
Black 307 4137 a Fn(\017)p Black 41 w Fo(\(date-hour)d
Fq(date)6 b Fo(\))42 b Fn(!)f Fq(hour)p Black 307 4237
a Fn(\017)p Black 41 w Fo(\(date-month-day)36 b Fq(date)6
b Fo(\))41 b Fn(!)h Fq(month-day)p Black 307 4337 a Fn(\017)p
Black 41 w Fo(\(date-month)37 b Fq(date)6 b Fo(\))42
b Fn(!)g Fq(month)p Black 307 4436 a Fn(\017)p Black
41 w Fo(\(date-year)c Fq(date)6 b Fo(\))42 b Fn(!)f Fq(ye)l(ar)p
Black 307 4536 a Fn(\017)p Black 41 w Fo(\(date-week-day)36
b Fq(date)6 b Fo(\))42 b Fn(!)f Fq(we)l(ek-day)p Black
307 4636 a Fn(\017)p Black 41 w Fo(\(date-year-day)36
b Fq(date)6 b Fo(\))42 b Fn(!)f Fq(ye)l(ar-day)p Black
307 4735 a Fn(\017)p Black 41 w Fo(\(date-date-dst)36
b Fq(date)6 b Fo(\))42 b Fn(!)f Fq(dst)291 4907 y Fr(These)31
b(are)g(the)i(constructor,)f(predicate)f(and)h(corresp)r(onding)e
(accessors)g(for)i(date)g(ob-)291 5006 y(jects.)37 b(The)27
b(meaning)g(of)h(the)g(v)-5 b(arious)26 b(\014eld)i(t)n(yp)r(es)g(are)e
(as)h(follo)n(ws:)p Black 1660 5255 a(141)p Black eop
end
%%Page: 142 150
TeXDict begin 142 149 bop 0 TeXcolorgray Black Black
Black Black Black 1066 510 a Fq(se)l(c)l(onds)222 b Fr(seconds)740
b(\(0{60\))1066 609 y Fq(minutes)204 b Fr(min)n(utes)730
b(\(0{59\))1066 709 y Fq(hour)325 b Fr(hours)814 b(\(0{23\))1066
809 y Fq(month-day)108 b Fr(da)n(y)26 b(of)i(mon)n(th)530
b(\(1{31\))1066 908 y Fq(mon)332 b Fr(mon)n(th)27 b(of)h(y)n(ear)505
b(\(0{11\))1066 1008 y Fq(ye)l(ar)338 b Fr(y)n(ear)860
b(since)27 b(1900)1066 1108 y Fq(we)l(ek-day)170 b Fr(da)n(y)26
b(of)i(w)n(eek)587 b(\(Sunda)n(y)27 b(=)g(0\))1066 1207
y Fq(ye)l(ar-day)184 b Fr(da)n(y)26 b(of)i(y)n(ear)609
b(\(0{365\))1066 1307 y Fq(dst)385 b Fr(is)27 b(summer)g(time)h(in)g
(e\013ect?)101 b Fo(#t)p Fr(,)26 b Fo(#f)h Fr(or)g(unsp)r(eci\014c)p
Black 755 1486 a Fn(\017)p Black 42 w Fo(\(date->string)36
b Fq(date)6 b Fo(\))42 b Fn(!)f Fq(string)739 1635 y
Fr(returns)33 b(a)g(string)g(represen)n(tation)f(of)40
b Fq(date)h Fr(in)34 b(the)g(lo)r(cale's)f(v)n(ersion)f(of)h(the)h
(follo)n(wing)739 1735 y(form:)p Black Black 739 1901
a Fo("Wed)42 b(Jun)g(30)h(21:49:08)d(1993)739 2000 y(")p
Black 755 2166 a Fn(\017)p Black 42 w Fo(\(time->utc-date)35
b Fq(time)6 b Fo(\))41 b Fn(!)h Fq(date)p Black 755 2266
a Fn(\017)p Black 42 w Fo(\(time->local-da)o(te)35 b
Fq(time)6 b Fo(\))41 b Fn(!)h Fq(date)739 2415 y Fr(These)24
b(con)n(v)n(ert)e(a)i(time)h(ob)5 b(ject)24 b(in)n(to)f(a)h(date)g(ob)5
b(ject;)25 b(the)g(\014rst)f(do)r(es)f(this)i(relativ)n(e)e(to)h(the)
739 2515 y(UTC)k(time)g(zone,)f(the)h(second)f(relativ)n(e)f(to)i(the)g
(curren)n(t)f(timezone)g(setting.)p Black 755 2665 a
Fn(\017)p Black 42 w Fo(\(date->time)36 b Fq(date)6 b
Fo(\))42 b Fn(!)g Fq(time)739 2814 y Fr(This)29 b(con)n(v)n(erts)e(a)h
(date)g(ob)5 b(ject)29 b(in)n(to)f(a)h(time)g(ob)5 b(ject)28
b(relativ)n(e)g(to)g(the)h(curren)n(t)f(timezone)739
2914 y(setting.)p Black 755 3063 a Fn(\017)p Black 42
w Fo(\(format-date)36 b Fq(string)41 b(date)6 b Fo(\))42
b Fn(!)g Fq(string)739 3212 y Fr(This)31 b(formats)g(a)f(date)h(in)n
(to)g(a)g(string,)h(according)d(to)i(the)h(format)f(sp)r(eci\014cation)
f(in)i(the)739 3312 y(\014rst)26 b(argumen)n(t.)36 b(The)27
b(format)f(sp)r(eci\014cation)g(is)g(according)f(to)i(the)g(sp)r
(eci\014cation)f(of)h(the)739 3412 y(C)h Fo(strftime)c
Fr(function:)789 3581 y Fo(\045a)99 b Fr(is)27 b(replaced)g(b)n(y)g
(the)h(lo)r(cale's)f(abbreviated)f(w)n(eekda)n(y)g(name.)789
3681 y Fo(\045A)99 b Fr(is)27 b(replaced)g(b)n(y)g(the)h(lo)r(cale's)f
(full)h(w)n(eekda)n(y)e(name.)789 3780 y Fo(\045b)99
b Fr(is)27 b(replaced)g(b)n(y)g(the)h(lo)r(cale's)f(abbreviated)f(mon)n
(th)i(name.)789 3880 y Fo(\045B)99 b Fr(is)27 b(replaced)g(b)n(y)g(the)
h(lo)r(cale's)f(full)h(mon)n(th)g(name.)789 3980 y Fo(\045c)99
b Fr(is)27 b(replaced)g(b)n(y)g(the)h(lo)r(cale's)f(appropriate)f(date)
h(and)h(time)g(represen)n(tation.)789 4079 y Fo(\045C)99
b Fr(is)25 b(replaced)f(b)n(y)h(the)h(y)n(ear)e(divided)i(b)n(y)f(100)f
(and)h(truncated)h(to)f(an)g(in)n(teger,)g(as)g(a)976
4179 y(decimal)i(n)n(um)n(b)r(er)g(\(00{99\).)789 4278
y Fo(\045d)99 b Fr(is)27 b(replaced)g(b)n(y)g(the)h(da)n(y)f(of)g(the)h
(mon)n(th)g(as)f(a)g(decimal)g(n)n(um)n(b)r(er)h(\(01{31\).)789
4378 y Fo(\045D)99 b Fr(is)27 b(equiv)-5 b(alen)n(t)27
b(to)h(\\)p Fo(\045m/\045d/\045y)p Fr(".)789 4478 y Fo(\045e)99
b Fr(is)21 b(replaced)g(b)n(y)h(the)g(da)n(y)f(of)h(the)g(mon)n(th)g
(as)f(a)h(decimal)f(n)n(um)n(b)r(er)h(\(1{31\);)g(a)g(single)976
4577 y(digit)27 b(is)h(preceded)f(b)n(y)g(a)g(space.)789
4677 y Fo(\045F)99 b Fr(is)27 b(equiv)-5 b(alen)n(t)27
b(to)h(\\)p Fo(\045Y-\045m-\045d)p Fr(")23 b(\(the)28
b(ISO)g(8601)e(date)h(format\).)789 4777 y Fo(\045g)99
b Fr(is)29 b(replaced)f(b)n(y)i(the)g(last)f(2)g(digits)g(of)g(the)h(w)
n(eek-based)e(y)n(ear)g(\(see)i(b)r(elo)n(w\))f(as)g(a)976
4876 y(decimal)e(n)n(um)n(b)r(er)g(\(00{99\).)789 4976
y Fo(\045G)99 b Fr(is)37 b(replaced)g(b)n(y)g(the)h(w)n(eek-based)e(y)n
(ear)g(\(see)i(b)r(elo)n(w\))f(as)g(a)g(decimal)h(n)n(um)n(b)r(er)976
5076 y(\(e.g.,)27 b(1997\).)p Black 2109 5255 a(142)p
Black eop end
%%Page: 143 151
TeXDict begin 143 150 bop 0 TeXcolorgray Black Black
Black 340 523 a Fo(\045h)99 b Fr(is)28 b(equiv)-5 b(alen)n(t)27
b(to)h(\\)p Fo(\045b)p Fr(".)340 623 y Fo(\045H)99 b
Fr(is)28 b(replaced)e(b)n(y)i(the)g(hour)f(\(24-hour)f(clo)r(c)n(k\))h
(as)g(a)g(decimal)g(n)n(um)n(b)r(er)h(\(00{23\).)340
722 y Fo(\045I)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g(hour)f
(\(12-hour)f(clo)r(c)n(k\))h(as)g(a)g(decimal)g(n)n(um)n(b)r(er)h
(\(01{12\).)340 822 y Fo(\045j)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g
(da)n(y)e(of)i(the)g(y)n(ear)e(as)h(a)g(decimal)h(n)n(um)n(b)r(er)f
(\(001{366\).)340 922 y Fo(\045m)99 b Fr(is)28 b(replaced)e(b)n(y)i
(the)g(mon)n(th)f(as)g(a)g(decimal)h(n)n(um)n(b)r(er)f(\(01{12\).)340
1021 y Fo(\045M)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g(min)n(ute)g
(as)f(a)g(decimal)g(n)n(um)n(b)r(er)h(\(00{59\).)340
1121 y Fo(\045n)99 b Fr(is)28 b(replaced)e(b)n(y)i(a)f(new-line)g(c)n
(haracter.)340 1220 y Fo(\045p)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g
(lo)r(cale's)e(equiv)-5 b(alen)n(t)28 b(of)f(the)h(AM/PM)f
(designations)g(asso-)527 1320 y(ciated)h(with)g(a)f(12-hour)f(clo)r(c)
n(k.)340 1420 y Fo(\045r)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g(lo)r
(cale's)e(12-hour)g(clo)r(c)n(k)h(time.)340 1519 y Fo(\045R)99
b Fr(is)28 b(equiv)-5 b(alen)n(t)27 b(to)h(\\)p Fo(\045H:\045M)p
Fr(".)340 1619 y Fo(\045S)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g
(second)f(as)g(a)g(decimal)g(n)n(um)n(b)r(er)h(\(00{60\).)340
1719 y Fo(\045t)99 b Fr(is)28 b(replaced)e(b)n(y)i(a)f(horizon)n
(tal-tab)e(c)n(haracter.)340 1818 y Fo(\045T)99 b Fr(is)28
b(equiv)-5 b(alen)n(t)27 b(to)h(\\)p Fo(\045H:\045M:\045S)p
Fr(")23 b(\(the)28 b(ISO)g(8601)d(time)j(format\).)340
1918 y Fo(\045u)99 b Fr(is)26 b(replaced)g(b)n(y)g(the)g(ISO)g(8601)f
(w)n(eekda)n(y)f(as)i(a)g(decimal)g(n)n(um)n(b)r(er)g(\(1{7\),)g(where)
527 2017 y(Monda)n(y)h(is)g(1.)340 2117 y Fo(\045U)99
b Fr(is)24 b(replaced)g(b)n(y)g(the)h(w)n(eek)f(n)n(um)n(b)r(er)g(of)g
(the)h(y)n(ear)e(\(the)i(\014rst)f(Sunda)n(y)g(as)g(the)g(\014rst)527
2217 y(da)n(y)j(of)h(w)n(eek)f(1\))g(as)g(a)g(decimal)h(n)n(um)n(b)r
(er)f(\(00{53\).)340 2316 y Fo(\045V)99 b Fr(is)41 b(replaced)f(b)n(y)g
(the)i(ISO)e(8601)f(w)n(eek)h(n)n(um)n(b)r(er)h(\(see)g(b)r(elo)n(w\))g
(as)f(a)g(decimal)527 2416 y(n)n(um)n(b)r(er)28 b(\(01{53\).)340
2516 y Fo(\045w)99 b Fr(is)25 b(replaced)f(b)n(y)g(the)i(w)n(eekda)n(y)
d(as)h(a)h(decimal)f(n)n(um)n(b)r(er)h(\(0{6\),)f(where)h(Sunda)n(y)f
(is)527 2615 y(0.)340 2715 y Fo(\045W)99 b Fr(is)23 b(replaced)e(b)n(y)
i(the)g(w)n(eek)e(n)n(um)n(b)r(er)i(of)f(the)h(y)n(ear)e(\(the)j
(\014rst)e(Monda)n(y)f(as)h(the)h(\014rst)527 2814 y(da)n(y)k(of)h(w)n
(eek)f(1\))g(as)g(a)g(decimal)h(n)n(um)n(b)r(er)f(\(00{53\).)340
2914 y Fo(\045x)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g(lo)r(cale's)e
(appropriate)g(date)i(represen)n(tation.)340 3014 y Fo(\045X)99
b Fr(is)28 b(replaced)e(b)n(y)i(the)g(lo)r(cale's)e(appropriate)g(time)
i(represen)n(tation.)340 3113 y Fo(\045y)99 b Fr(is)25
b(replaced)f(b)n(y)h(the)h(last)e(2)h(digits)g(of)g(the)g(y)n(ear)f(as)
g(a)h(decimal)g(n)n(um)n(b)r(er)g(\(00{99\).)340 3213
y Fo(\045Y)99 b Fr(is)28 b(replaced)e(b)n(y)i(the)g(y)n(ear)e(as)h(a)g
(decimal)g(n)n(um)n(b)r(er)h(\(e.g.,)f(1997\).)340 3313
y Fo(\045z)99 b Fr(is)37 b(replaced)f(b)n(y)g(the)h(o\013set)g(from)f
(UTC)h(in)g(the)h(ISO)e(8601)f(format)h(\\)p Fo(-0430)p
Fr(")527 3412 y(\(meaning)c(4)g(hours)g(30)g(min)n(utes)g(b)r(ehind)h
(UTC,)g(w)n(est)f(of)h(Green)n(wic)n(h\),)g(or)e(b)n(y)527
3512 y(no)d(c)n(haracters)d(if)j(no)f(time)h(zone)f(is)h(determinable.)
340 3611 y Fo(\045Z)99 b Fr(is)37 b(replaced)e(b)n(y)h(the)h(lo)r
(cale's)f(time)h(zone)f(name)g(or)f(abbreviation,)j(or)d(b)n(y)h(no)527
3711 y(c)n(haracters)25 b(if)k(no)e(time)h(zone)f(is)h(determinable.)
340 3811 y Fo(\045\045)99 b Fr(is)28 b(replaced)e(b)n(y)i
Fo(\045)p Fr(.)291 4120 y Fj(9.8)135 b(I/O)291 4303 y
Fr(These)27 b(pro)r(cedures)f(are)h(in)h(structures)e
Fo(posix-i/o)e Fr(and)k Fo(posix)p Fr(.)p Black 307 4455
a Fn(\017)p Black 41 w Fo(\(open-pipe\))37 b Fn(!)42
b Fq(input-p)l(ort)f(+)g(output-p)l(ort)291 4607 y Fo(Open-pipe)27
b Fr(creates)j(a)h(new)h(pip)r(e)g(and)f(returns)f(the)i(t)n(w)n(o)f
(ends)g(as)g(an)g(input)h(p)r(ort)f(and)291 4707 y(an)c(output)h(p)r
(ort.)415 4807 y(A)22 b Fq(\014le)h(descriptor)g Fr(p)r(ort)e(\(or)g
Fq(fd-p)l(ort)8 b Fr(\))22 b(is)f(a)g(p)r(ort)g(that)g(reads)f(to)h(or)
g(writes)f(from)h(an)g(OS)291 4907 y(\014le)e(descriptor.)33
b(Fd-p)r(orts)19 b(are)f(returned)h(b)n(y)h Fo(open-input-file)p
Fr(,)15 b Fo(open-output-file)p Fr(,)291 5006 y Fo(open-file)p
Fr(,)24 b Fo(open-pipe)p Fr(,)g(and)j(other)g(pro)r(cedures.)p
Black 1660 5255 a(143)p Black eop end
%%Page: 144 152
TeXDict begin 144 151 bop 0 TeXcolorgray Black Black
Black Black 755 523 a Fn(\017)p Black 42 w Fo(\(fd-port?)46
b Fq(p)l(ort)8 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p
Black 755 623 a Fn(\017)p Black 42 w Fo(\(port->fd)37
b Fq(p)l(ort)8 b Fo(\))41 b Fn(!)h Fq(inte)l(ger)g(or)g
Fo(#f)739 747 y(Fd-port?)d Fr(returns)28 b(true)i(if)f(its)h(argumen)n
(t)e(is)h(an)h(fd-p)r(ort.)42 b Fo(Port->fd)26 b Fr(returns)i(the)i
(\014le)739 846 y(descriptor)c(asso)r(ciated)h(with)h(or)e
Fo(#f)h Fr(if)35 b Fq(p)l(ort)h Fr(is)27 b(not)h(an)f(fd-p)r(ort.)p
Black 755 970 a Fn(\017)p Black 42 w Fo(\(remap-file-des)o(cr)o(ipt)o
(or)o(s)36 b Fq(fd-sp)l(e)l(c)42 b(.)13 b(.)g(.)g Fo(\))739
1094 y(Remap-file-descr)o(ip)o(tor)o(s)26 b Fr(reassigns)31
b(\014le)h(descriptors)f(to)i(p)r(orts.)51 b(The)32 b
Fq(fd-sp)l(e)l(cs)40 b Fr(in-)739 1194 y(dicate)d(whic)n(h)h(p)r(ort)g
(is)f(to)h(b)r(e)g(mapp)r(ed)g(to)g(eac)n(h)f(\014le)g(descriptor:)56
b(the)38 b(\014rst)g(gets)f(\014le)739 1293 y(descriptor)c
Fo(0)p Fr(,)j(the)e(second)g(gets)g Fo(1)p Fr(,)h(and)g(so)e(forth.)57
b(A)35 b Fq(fd-sp)l(e)l(c)40 b Fr(is)34 b(either)g(a)g(p)r(ort)g(that)
739 1393 y(reads)26 b(from)h(or)f(writes)h(to)g(a)g(\014le)h
(descriptor,)e(or)g Fo(#f)p Fr(,)h(with)h Fo(#f)e Fr(indicating)h(that)
h(the)g(cor-)739 1493 y(resp)r(onding)34 b(\014le)g(descriptor)g(is)g
(not)h(used.)57 b(An)n(y)35 b(op)r(en)f(p)r(orts)h(not)f(listed)h(are)e
(mark)n(ed)739 1592 y(`close-on-exec'.)i(The)27 b(same)g(p)r(ort)h(ma)n
(y)f(b)r(e)h(mo)n(v)n(ed)e(to)i(m)n(ultiple)g(new)f(\014le)h
(descriptors.)863 1692 y(F)-7 b(or)27 b(example,)p Black
Black 739 1833 a Fo(\(remap-file-desc)o(ri)o(pto)o(rs)37
b(\(current-output-)o(por)o(t\))1785 1932 y(#f)1785 2032
y(\(current-input-p)o(ort)o(\)\))739 2172 y Fr(mo)n(v)n(es)24
b(the)h(curren)n(t)f(output)i(p)r(ort)f(to)g(\014le)g(descriptor)f
Fo(0)h Fr(and)g(the)g(curren)n(t)g(input)g(p)r(ort)g(to)739
2272 y(\014le)j(descriptor)e Fo(2)p Fr(.)p Black 755
2396 a Fn(\017)p Black 42 w Fo(\(dup)39 b Fq(fd-p)l(ort)8
b Fo(\))42 b Fn(!)g Fq(fd-p)l(ort)p Black 755 2496 a
Fn(\017)p Black 42 w Fo(\(dup-switching-)o(mo)o(de)35
b Fq(fd-p)l(ort)8 b Fo(\))42 b Fn(!)f Fq(fd-p)l(ort)p
Black 755 2595 a Fn(\017)p Black 42 w Fo(\(dup2)e Fq(fd-p)l(ort)j
(\014le-descriptor)9 b Fo(\))43 b Fn(!)e Fq(fd-p)l(ort)739
2719 y Fr(These)32 b(c)n(hange)g Fq(fd-p)l(ort)8 b Fr('s)33
b(\014le)g(descriptor)f(and)g(return)g(a)h(new)f(p)r(ort)h(that)g(uses)
f Fq(p)l(orts)7 b Fr('s)739 2819 y(old)26 b(\014le)h(descriptor.)35
b Fo(Dup)26 b Fr(uses)g(the)h(lo)n(w)n(est)f(un)n(used)g(\014le)h
(descriptor)e(and)i Fo(dup2)e Fr(uses)h(the)739 2919
y(one)21 b(pro)n(vided.)34 b Fo(Dup-switching-mo)o(de)15
b Fr(is)22 b(the)g(same)f(as)g Fo(dup)f Fr(except)i(that)g(the)g
(returned)739 3018 y(p)r(ort)j(is)h(an)g(input)g(p)r(ort)g(if)g(the)g
(argumen)n(t)f(w)n(as)g(an)g(output)i(p)r(ort)e(and)h(vice)f(v)n(ersa.)
35 b(If)26 b(an)n(y)739 3118 y(existing)h(p)r(ort)g(uses)h(the)g
(\014le)f(descriptor)g(passed)g(to)g Fo(dup2)p Fr(,)f(that)i(p)r(ort)f
(is)h(closed.)p Black 755 3242 a Fn(\017)p Black 42 w
Fo(\(close-all-but)35 b Fq(p)l(ort)42 b(.)13 b(.)g(.)g
Fo(\))739 3366 y(Close-all-but)21 b Fr(closes)26 b(all)g(\014le)h
(descriptors)e(whose)h(asso)r(ciated)f(p)r(orts)i(are)e(not)i(passed)
739 3465 y(to)g(it)h(as)f(argumen)n(ts.)p Black 755 3589
a Fn(\017)p Black 42 w Fo(\(close-on-exec?)43 b Fq(p)l(ort)8
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 755 3689
a Fn(\017)p Black 42 w Fo(\(set-close-on-e)o(xe)o(c?!)35
b Fq(p)l(ort)41 b(b)l(o)l(ole)l(an)6 b Fo(\))739 3813
y(Close-on-exec?)55 b Fr(returns)34 b(true)i(if)42 b
Fo(port)34 b Fr(will)i(b)r(e)g(closed)f(when)g(a)g(new)h(program)d(is)
739 3913 y(exec'ed.)j Fo(Set-close-on-exec)o(?!)30 b
Fr(sets)e Fo(port)p Fr('s)e(close-on-exec)f(\015ag.)p
Black 755 4037 a Fn(\017)p Black 42 w Fo(\(i/o-flags)37
b Fq(p)l(ort)8 b Fo(\))41 b Fn(!)h Fq(\014le-options)p
Black 755 4136 a Fn(\017)p Black 42 w Fo(\(set-i/o-flags!)35
b Fq(p)l(ort)42 b(\014le-options)7 b Fo(\))739 4260 y
Fr(These)22 b(t)n(w)n(o)f(pro)r(cedures)g(read)h(and)g(write)g(v)-5
b(arious)21 b(options)h(for)f Fo(port)p Fr(.)34 b(The)22
b(options)g(that)739 4360 y(can)c(b)r(e)h(read)e(are)h
Fo(append)p Fr(,)f Fo(nonblocking)p Fr(,)f Fo(read-only)p
Fr(,)h Fo(write-only)p Fr(,)f(and)i Fo(read/write)p Fr(.)739
4459 y(Only)27 b(the)h Fo(append)d Fr(and)j Fo(nonblocking)23
b Fr(can)k(b)r(e)h(written.)p Black 755 4583 a Fn(\017)p
Black 42 w Fo(\(port-is-a-term)o(in)o(al?)43 b Fq(p)l(ort)8
b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)p Black 755 4683
a Fn(\017)p Black 42 w Fo(\(port-terminal-)o(na)o(me)35
b Fq(p)l(ort)8 b Fo(\))41 b Fn(!)h Fq(string)739 4807
y Fo(Port-is-a-termin)o(al)o(?)59 b Fr(returns)37 b(true)g(if)44
b Fq(p)l(ort)h Fr(has)37 b(an)g(underlying)f(\014le)h(descriptor)739
4907 y(that)23 b(is)h(asso)r(ciated)e(with)h(a)g(terminal.)36
b(F)-7 b(or)22 b(suc)n(h)h(p)r(orts)g Fo(port-terminal-na)o(me)17
b Fr(returns)739 5006 y(the)28 b(name)f(of)h(the)g(terminal,)f(for)g
(all)h(others)e(it)i(returns)f Fo(#f)p Fr(.)p Black 2109
5255 a(144)p Black eop end
%%Page: 145 153
TeXDict begin 145 152 bop 0 TeXcolorgray Black Black
Black 291 523 a Fj(9.9)135 b(Regular)46 b(expressions)291
708 y Fr(The)d(pro)r(cedures)f(in)h(this)h(section)e(pro)n(vide)g
(access)g(to)h(POSIX)g(regular)e(expression)291 808 y(matc)n(hing.)62
b(The)37 b(regular)d(expression)h(syn)n(tax)g(and)i(seman)n(tics)e(are)
g(far)h(to)r(o)g(complex)291 908 y(to)26 b(b)r(e)h(describ)r(ed)g
(here.)36 b(Due)27 b(to)f(limitations)h(in)g(the)g(underlying)f
(facilit)n(y)-7 b(,)27 b(only)f(Latin-1)291 1007 y(strings)d(are)h
(guaran)n(teed)f(to)i(w)n(ork)e(here|on)h(some)g(platforms,)h(only)f
(ASCI)r(I)i(ma)n(y)e(func-)291 1107 y(tion)32 b(correctly)-7
b(.)51 b(Moreo)n(v)n(er,)31 b(b)r(ecause)i(the)g(C)g(in)n(terface)f
(uses)g(zero)g(b)n(ytes)g(for)g(marking)291 1207 y(the)f(ends)f(of)h
(strings,)g(patterns)f(and)h(strings)f(that)h(con)n(tain)f(zero)f(b)n
(ytes)i(will)g(not)f(w)n(ork)291 1306 y(correctly)-7
b(.)415 1408 y(These)27 b(pro)r(cedures)g(are)f(in)i(structures)f
Fo(posix-regexps)22 b Fr(and)28 b Fo(posix)p Fr(.)415
1509 y(An)k(abstract)d(data)i(t)n(yp)r(e)g(for)g(creating)e(POSIX)i
(regular)e(expressions)g(is)i(describ)r(ed)291 1609 y(in)c(section)p
0 0 1 TeXcolorrgb 28 w(5.21)p Black(.)p Black 307 1764
a Fn(\017)p Black 41 w Fo(\(make-regexp)37 b Fq(string)k(.)51
b(r)l(e)l(gexp-options)7 b Fo(\))41 b Fn(!)h Fq(r)l(e)l(gexp)p
Black 307 1863 a Fn(\017)p Black 41 w Fo(\(regexp-option)36
b Fq(option-name)6 b Fo(\))28 b Fn(!)g Fq(r)l(e)l(gexp-option)757
b Fr(syn)n(tax)291 2019 y Fo(Make-regexp)21 b Fr(mak)n(es)26
b(a)g(new)g(regular)e(expression,)i(using)h Fq(string)33
b Fr(as)26 b(the)h(pattern.)36 b(The)291 2118 y(p)r(ossible)27
b(option)g(names)g(are:)p Black Black 945 2305 a Fo(extended)227
b Fr(use)28 b(the)g(extended)f(patterns)945 2404 y Fo(ignore-case)95
b Fr(ignore)26 b(case)h(when)h(matc)n(hing)945 2504 y
Fo(submatches)139 b Fr(rep)r(ort)27 b(submatc)n(hes)945
2604 y Fo(newline)271 b Fr(treat)27 b(newlines)h(sp)r(ecially)415
2790 y(The)g(regular)e(expression)g(is)i(not)g(compiled)g(un)n(til)g
(it)g(matc)n(hed)g(against)f(a)g(string,)h(so)291 2890
y(an)n(y)e(errors)g(in)i(the)g(pattern)f(string)g(will)h(not)f(b)r(e)h
(rep)r(orted)f(un)n(til)h(that)g(p)r(oin)n(t.)p Black
307 3045 a Fn(\017)p Black 41 w Fo(\(regexp?)47 b Fq(x)10
b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)291 3200 y Fr(This)27
b(is)h(a)f(predicate)g(for)g(regular)f(expressions.)p
Black 307 3355 a Fn(\017)p Black 41 w Fo(\(regexp-match)36
b Fq(r)l(e)l(gexp)42 b(string)f(start)g(submatches?)51
b(starts-line?)f(ends-line?)10 b Fo(\))556 3455 y Fn(!)44
b Fq(b)l(o)l(ole)l(an)30 b(or)h(list)e(of)i(matches)p
Black 307 3554 a Fn(\017)p Black 41 w Fo(\(match?)47
b Fq(x)10 b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black
307 3654 a Fn(\017)p Black 41 w Fo(\(match-start)c Fq(match)6
b Fo(\))42 b Fn(!)f Fq(inte)l(ger)p Black 307 3753 a
Fn(\017)p Black 41 w Fo(\(match-end)d Fq(match)6 b Fo(\))42
b Fn(!)f Fq(inte)l(ger)291 3908 y Fo(Regexp-match)23
b Fr(matc)n(hes)28 b(the)h(regular)e(expression)g(against)h(the)g(c)n
(haracters)f(in)i Fq(string)7 b Fr(,)291 4008 y(starting)29
b(at)h(p)r(osition)f Fq(start)8 b Fr(.)44 b(If)30 b(the)h(string)e(do)r
(es)h(not)g(matc)n(h)g(the)g(regular)e(expression,)291
4108 y Fo(regexp-match)18 b Fr(returns)24 b Fo(#f)p Fr(.)34
b(If)25 b(the)f(string)f(do)r(es)g(matc)n(h,)i(then)f(a)f(list)h(of)g
(matc)n(h)g(records)291 4207 y(is)32 b(returned)g(if)39
b Fq(submatches?)62 b Fr(is)33 b(true,)g(or)f Fo(#t)f
Fr(is)i(returned)f(if)h(it)f(is)h(not.)51 b(Eac)n(h)31
b(matc)n(h)291 4307 y(record)g(con)n(tains)h(the)i(index)f(of)g(the)g
(c)n(haracter)e(at)i(the)g(b)r(eginning)g(of)g(the)g(matc)n(h)g(and)291
4407 y(one)f(more)h(than)g(the)h(index)f(of)g(the)h(c)n(haracter)d(at)i
(the)h(end.)54 b(The)33 b(\014rst)g(matc)n(h)g(record)291
4506 y(giv)n(es)23 b(the)i(lo)r(cation)f(of)g(the)h(substring)f(that)g
(matc)n(hed)h Fq(r)l(e)l(gexp)5 b Fr(.)36 b(If)25 b(the)g(pattern)f(in)
h Fq(r)l(e)l(gexp)291 4606 y Fr(con)n(tained)32 b(submatc)n(hes,)j
(then)e(the)h(results)f(of)g(these)h(are)e(returned)h(in)h(order,)f
(with)h(a)291 4705 y(matc)n(h)h(records)e(rep)r(orting)i(submatc)n(hes)
f(that)i(succeeded)f(and)g Fo(#f)g Fr(in)g(place)g(of)g(those)291
4805 y(that)27 b(did)h(not.)415 4907 y Fq(Starts-line?)65
b Fr(should)33 b(b)r(e)h(true)f(if)41 b Fq(string)g Fr(starts)32
b(at)i(the)f(b)r(eginning)h(of)f(a)g(line)h(and)291 5006
y Fq(ends-line?)48 b Fr(should)27 b(b)r(e)h(true)f(if)i(it)f(ends)f
(one.)p Black 1660 5255 a(145)p Black eop end
%%Page: 146 154
TeXDict begin 146 153 bop 0 TeXcolorgray Black Black
Black 739 523 a Fj(9.10)135 b(Syslog)46 b(facilit)l(y)739
705 y Fr(The)26 b(pro)r(cedures)f(in)h(this)g(section)g(pro)n(vide)e
(access)h(to)h(the)g(POSIX)g(syslog)e(facilit)n(y)-7
b(.)36 b(The)739 805 y(functionalit)n(y)24 b(is)g(in)g(a)g(structure)g
(called)g Fo(posix-syslog)p Fr(.)30 b(The)25 b(Sc)n(heme)f(48)f(in)n
(terface)g(to)739 904 y(the)g(syslog)f(facilit)n(y)g(di\013ers)h
(signi\014can)n(tly)f(from)h(that)g(of)g(the)g(Unix)h(library)d
(functionalit)n(y)739 1004 y(in)28 b(order)e(to)h(supp)r(ort)h(m)n
(ultiple)g(sim)n(ultaneous)f(connections)g(to)g(the)h(syslog)e(facilit)
n(y)-7 b(.)863 1103 y(Log)31 b(messages)e(carry)h(a)h(v)-5
b(ariet)n(y)31 b(of)g(parameters)f(b)r(eside)h(the)h(text)g(of)f(the)h
(message)739 1203 y(itself,)24 b(namely)e(a)g(set)g(of)h(options)f(con)
n(trolling)f(the)h(output)h(format)f(and)h(destination,)g(the)739
1303 y(facilit)n(y)18 b(iden)n(tifying)h(the)g(class)e(of)i(programs)d
(the)j(message)e(is)h(coming)g(from,)i(an)e(iden)n(ti\014er)739
1402 y(sp)r(ecifying)24 b(the)g(concrete)e(program,)h(and)g(the)h(lev)n
(el)f(iden)n(tifying)h(the)g(imp)r(ortance)f(of)h(the)739
1502 y(message.)60 b(Moreo)n(v)n(er,)35 b(a)h(log)f(mask)g(can)h(prev)n
(en)n(t)f(messages)f(at)i(certain)f(lev)n(els)g(to)h(b)r(e)739
1602 y(actually)27 b(sen)n(t)g(to)h(the)g(syslog)e(daemon.)739
1833 y Fe(Log)38 b(options)739 1986 y Fr(A)31 b(log)f(option)g(sp)r
(eci\014es)h(details)f(of)h(the)g(I/O)f(b)r(eha)n(vior)f(of)i(the)g
(syslog)e(facilit)n(y)-7 b(.)46 b(A)31 b(sys-)739 2086
y(log)g(option)h(is)f(an)h(elemen)n(t)g(of)g(a)g(\014nite)g(t)n(yp)r(e)
g(\(see)g(Section)p 0 0 1 TeXcolorrgb 32 w(5.10)p Black(\))f
(constructed)g(b)n(y)h(the)739 2186 y Fo(syslog-option)20
b Fr(macro.)35 b(The)26 b(syslog)e(facilit)n(y)h(w)n(orks)f(with)i
(sets)f(of)h(options)f(whic)n(h)g(are)739 2285 y(represen)n(ted)h(as)h
(en)n(um)h(sets)f(\(see)h(Section)p 0 0 1 TeXcolorrgb
27 w(5.11)p Black(\).)p Black 755 2430 a Fn(\017)p Black
42 w Fo(\(syslog-option)35 b Fq(option-name)6 b Fo(\))29
b Fn(!)e Fq(option)1009 b Fr(syn)n(tax)p Black 755 2530
a Fn(\017)p Black 42 w Fo(\(syslog-option?)43 b Fq(x)10
b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)p Black 755 2630
a Fn(\017)p Black 42 w Fo(\(make-syslog-op)o(ti)o(ons)35
b Fq(list)8 b Fo(\))41 b Fn(!)g Fq(options)p Black 755
2729 a Fn(\017)p Black 42 w Fo(\(syslog-options)35 b
Fq(option-name)48 b Fo(...\))27 b Fn(!)g Fq(options)759
b Fr(syn)n(tax)p Black 755 2829 a Fn(\017)p Black 42
w Fo(\(syslog-options)o(?)44 b Fq(x)10 b Fo(\))41 b Fn(!)g
Fq(b)l(o)l(ole)l(an)739 2974 y Fo(Syslog-option)36 b
Fr(constructs)k(a)g(log)h(option)f(from)h(the)g(name)g(of)g(an)g
(option.)77 b(\(The)739 3074 y(p)r(ossible)20 b(names)g(are)f(listed)i
(b)r(elo)n(w.\))34 b Fo(Syslog-option?)29 b Fr(is)20
b(a)g(predicate)g(for)g(log)g(options.)739 3174 y(Options)31
b(are)f(comparable)g(using)i Fo(eq?)p Fr(.)46 b Fo(Make-syslog-optio)o
(ns)25 b Fr(constructs)30 b(a)h(set)g(of)739 3273 y(options)d(from)g(a)
g(list)h(of)f(options.)39 b Fo(Syslog-options)23 b Fr(is)28
b(a)g(macro)f(whic)n(h)i(expands)e(in)n(to)739 3373 y(an)34
b(expression)f(returning)g(a)h(set)h(of)f(options)g(from)g(names.)56
b Fo(Syslog-options?)51 b Fr(is)35 b(a)739 3472 y(predicate)27
b(for)g(sets)g(of)h(options.)863 3572 y(Here)g(is)f(a)g(list)h(of)g(p)r
(ossible)f(names)g(of)h(syslog)e(options:)p Black 739
3749 a Fo(console)p Black 39 w Fr(If)31 b(syslog)f(cannot)g(pass)g(the)
i(message)d(to)i(syslogd)f(it)i(will)f(attempt)g(to)g(write)946
3849 y(the)d(message)f(to)g(the)h(console.)p Black 739
4013 a Fo(delay)p Black 39 w Fr(Dela)n(y)c(op)r(ening)f(the)h
(connection)f(to)h(syslogd)e(immediately)i(un)n(til)g(the)g(\014rst)g
(mes-)946 4113 y(sage)j(is)g(logged.)p Black 739 4277
a Fo(no-delay)p Black 38 w Fr(Op)r(en)k(the)h(connection)f(to)g
(syslogd)e(immediately)-7 b(.)48 b(Normally)31 b(the)g(op)r(en)g(is)946
4376 y(dela)n(y)n(ed)h(un)n(til)h(the)g(\014rst)f(message)f(is)h
(logged.)50 b(Useful)33 b(for)f(programs)e(that)j(need)946
4476 y(to)28 b(manage)e(the)i(order)f(in)g(whic)n(h)h(\014le)g
(descriptors)e(are)g(allo)r(cated.)946 4608 y Fm(NOT)-8
b(A)33 b(BENE:)27 b Fr(The)i Fo(delay)d Fr(and)i Fo(no-delay)d
Fr(options)j(are)f(included)i(for)f(com-)946 4707 y(pleteness,)c(but)g
(do)e(not)h(ha)n(v)n(e)f(the)h(exp)r(ected)h(e\013ect)f(in)g(the)h
(presen)n(t)e(Sc)n(heme)h(in)n(ter-)946 4807 y(face:)34
b(Because)21 b(the)g(Sc)n(heme)h(in)n(terface)f(has)g(to)g(m)n
(ultiplex)h(m)n(ultiple)g(sim)n(ultaneous)946 4907 y(connections)28
b(to)f(the)i(syslog)d(facilit)n(y)i(o)n(v)n(er)e(a)i(single)f(one,)h
(op)r(en)g(and)f(close)h(op)r(era-)946 5006 y(tions)g(on)f(that)h
(facilit)n(y)f(happ)r(en)h(at)g(unpredictable)f(times.)p
Black 2109 5255 a(146)p Black eop end
%%Page: 147 155
TeXDict begin 147 154 bop 0 TeXcolorgray Black Black
Black Black 291 523 a Fo(log-pid)p Black 38 w Fr(Log)28
b(the)i(pro)r(cess)e(id)i(with)f(eac)n(h)g(message:)38
b(useful)30 b(for)f(iden)n(tifying)g(instan)n(ti-)498
623 y(ations)e(of)h(daemons.)p Black 291 788 a Fo(no-wait)p
Black 38 w Fr(Do)g(not)f(w)n(ait)h(for)f(c)n(hild)g(pro)r(cesses.)291
1019 y Fe(Log)37 b(facilities)291 1173 y Fr(A)30 b(log)f(facilit)n(y)h
(iden)n(ti\014es)g(the)g(originator)d(of)j(a)g(log)f(message)f(from)i
(a)f(\014nite)i(set)f(kno)n(wn)291 1272 y(to)d(the)h(system.)37
b(Eac)n(h)26 b(originator)f(is)j(iden)n(ti\014ed)g(b)n(y)f(a)g(name:)p
Black 307 1420 a Fn(\017)p Black 41 w Fo(\(syslog-facility)35
b Fq(facility-name)6 b Fo(\))30 b Fn(!)d Fq(facility)885
b Fr(syn)n(tax)p Black 307 1519 a Fn(\017)p Black 41
w Fo(\(syslog-facility?)43 b Fq(x)10 b Fo(\))41 b Fn(!)g
Fq(b)l(o)l(ole)l(an)291 1666 y Fo(Syslog-facility)19
b Fr(is)26 b(macro)f(that)i(expands)e(in)n(to)h(an)g(expression)e
(returning)h(a)h(facilit)n(y)291 1766 y(for)h(a)h(giv)n(en)f(name.)38
b Fo(Syslog-facility?)31 b Fr(is)d(a)g(predicate)f(for)h(facilities.)38
b(F)-7 b(acilities)28 b(are)291 1866 y(comparable)e(via)h
Fo(eq?)p Fr(.)415 1965 y(Here)g(is)h(a)f(list)h(of)f(p)r(ossible)h
(names)f(of)g(syslog)f(facilities:)p Black 291 2145 a
Fo(authorization)p Black 36 w Fr(The)h(authorization)g(system:)36
b(login,)27 b(su,)h(gett)n(y)-7 b(,)27 b(etc.)p Black
291 2310 a Fo(cron)p Black 39 w Fr(The)h(cron)f(daemon.)p
Black 291 2475 a Fo(daemon)p Black 39 w Fr(System)34
b(daemons,)g(suc)n(h)g(as)f(routed,)i(that)f(are)f(not)h(pro)n(vided)e
(for)i(explicitly)498 2575 y(b)n(y)27 b(other)g(facilities.)p
Black 291 2739 a Fo(kernel)p Black 39 w Fr(Messages)e(generated)i(b)n
(y)g(the)h(k)n(ernel.)p Black 291 2904 a Fo(lpr)p Black
40 w Fr(The)g(line)f(prin)n(ter)g(sp)r(o)r(oling)g(system:)37
b(lpr,)27 b(lp)r(c,)h(lp)r(d,)h(etc.)p Black 291 3069
a Fo(mail)p Black 39 w Fr(The)f(mail)g(system.)p Black
291 3234 a Fo(news)p Black 39 w Fr(The)g(net)n(w)n(ork)e(news)i
(system.)p Black 291 3399 a Fo(user)p Black 39 w Fr(Messages)e
(generated)h(b)n(y)g(random)g(user)g(pro)r(cesses.)p
Black 291 3564 a Fo(uucp)p Black 39 w Fr(The)h(uucp)g(system.)p
Black 291 3729 a Fo(local0)h(local1)g(local2)h(local3)f(local4)g
(local5)h(local6)f(local7)p Black 39 w Fr(Reserv)n(ed)17
b(for)h(lo-)498 3829 y(cal)27 b(use.)291 4060 y Fe(Log)37
b(lev)m(els)291 4214 y Fr(A)32 b(log)g(lev)n(el)g(iden)n(ti\014es)g
(the)h(imp)r(ortance)e(of)i(a)f(message)e(from)i(a)g(\014xed)h(set)f
(of)g(p)r(ossible)291 4313 y(lev)n(els.)p Black 307 4461
a Fn(\017)p Black 41 w Fo(\(syslog-level)k Fq(level-name)6
b Fo(\))29 b Fn(!)e Fq(level)1193 b Fr(syn)n(tax)p Black
307 4560 a Fn(\017)p Black 41 w Fo(\(syslog-level?)44
b Fq(x)10 b Fo(\))41 b Fn(!)h Fq(b)l(o)l(ole)l(an)291
4707 y Fo(Syslog-level)16 b Fr(is)k(macro)g(that)h(expands)f(in)n(to)h
(an)f(expression)g(returning)g(a)g(facilit)n(y)h(for)f(a)291
4807 y(giv)n(en)25 b(name.)36 b Fo(Syslog-level?)31 b
Fr(is)26 b(a)g(predicate)f(for)h(facilities.)36 b(Lev)n(els)25
b(are)g(comparable)291 4907 y(via)i Fo(eq?)p Fr(.)415
5006 y(Here)g(is)h(a)f(list)h(of)f(p)r(ossible)h(names)f(of)g(syslog)f
(lev)n(els:)p Black 1660 5255 a(147)p Black eop end
%%Page: 148 156
TeXDict begin 148 155 bop 0 TeXcolorgray Black Black
Black Black 739 523 a Fo(emergency)p Black 38 w Fr(A)28
b(panic)f(condition.)37 b(This)27 b(is)h(normally)e(broadcast)g(to)i
(all)f(users.)p Black 739 690 a Fo(alert)p Black 39 w
Fr(A)32 b(condition)f(that)g(should)g(b)r(e)g(corrected)f(immediately)
-7 b(,)32 b(suc)n(h)f(as)f(a)h(corrupted)946 789 y(system)d(database.)p
Black 739 956 a Fo(critical)p Black 38 w Fr(Critical)f(conditions,)g
(e.g.,)h(hard)f(device)g(errors.)p Black 739 1123 a Fo(error)p
Black 39 w Fr(Errors.)p Black 739 1289 a Fo(warning)p
Black 39 w Fr(W)-7 b(arning)26 b(messages.)p Black 739
1456 a Fo(notice)p Black 39 w Fr(Conditions)19 b(that)g(are)f(not)h
(error)f(conditions,)i(but)g(should)f(p)r(ossibly)g(b)r(e)g(handled)946
1556 y(sp)r(ecially)-7 b(.)p Black 739 1722 a Fo(info)p
Black 40 w Fr(Informational)26 b(messages.)p Black 739
1889 a Fo(debug)p Black 39 w Fr(Messages)d(that)h(con)n(tain)g
(information)f(normally)g(of)h(use)g(only)g(when)g(debugging)946
1989 y(a)k(program.)739 2222 y Fe(Log)38 b(masks)739
2375 y Fr(A)d(log)f(masks)f(can)i(mask)f(out)g(log)g(messages)f(at)i(a)
f(set)g(of)h(lev)n(els.)57 b(A)35 b(log)f(mask)g(is)h(an)739
2475 y(en)n(um)28 b(set)f(of)h(log)f(lev)n(els.)p Black
755 2625 a Fn(\017)p Black 42 w Fo(\(make-syslog-ma)o(sk)35
b Fq(list)8 b Fo(\))41 b Fn(!)h Fq(mask)p Black 755 2725
a Fn(\017)p Black 42 w Fo(\(syslog-mask)36 b Fq(level-name)49
b Fo(...\))26 b Fn(!)h Fq(mask)1038 b Fr(syn)n(tax)p
Black 755 2824 a Fn(\017)p Black 42 w Fo(syslog-mask-all)1917
b Fr(mask)p Black 755 2924 a Fn(\017)p Black 42 w Fo(\(syslog-mask-up)o
(to)35 b Fq(level)9 b Fo(\))42 b Fn(!)f Fq(mask)p Black
755 3024 a Fn(\017)p Black 42 w Fo(\(syslog-mask?)j Fq(x)10
b Fo(\))41 b Fn(!)g Fq(b)l(o)l(ole)l(an)739 3173 y Fo(Make-syslog-mask)
27 b Fr(constructs)32 b(a)h(mask)f(from)h(a)g(list)g(of)g(lev)n(els.)53
b Fo(Syslog-mask)29 b Fr(is)k(a)739 3273 y(macro)19 b(whic)n(h)h
(constructs)g(a)g(mask)g(from)g(names)g(of)g(lev)n(els.)34
b Fo(Syslog-mask-all)15 b Fr(is)20 b(a)g(pre-)739 3373
y(de\014ned)29 b(log)e(mask)h(con)n(taining)f(all)h(lev)n(els.)38
b Fo(Syslog-mask-upto)22 b Fr(returns)27 b(a)h(mask)g(con-)739
3472 y(sisting)c(of)g(all)g(lev)n(els)g(up)g(to)h(and)f(including)g(a)g
(certain)g(lev)n(el,)h(starting)e(with)i Fo(emergency)p
Fr(.)739 3706 y Fe(Logging)739 3859 y Fr(Sc)n(heme)41
b(48)f(dynamically)h(main)n(tains)f(implicit)i(connections)f(to)g(the)h
(syslog)d(facilit)n(y)739 3959 y(sp)r(ecifying)29 b(a)h(curren)n(t)e
(iden)n(ti\014er,)i(curren)n(t)f(options,)g(a)h(curren)n(t)e(facilit)n
(y)i(and)f(a)g(curren)n(t)739 4058 y(log)j(mask.)51 b(Ev)n(ery)31
b(thread)h(main)n(tains)g(it)h(o)n(wn)f(implicit)h(connection)f(to)h
(syslog.)50 b(Note)739 4158 y(that)28 b(the)g(connection)f(is)g(not)h
(implicitly)g(preserv)n(ed)e(across)g(a)h Fo(spawn)p
Fr(.)p Black 755 4308 a Fn(\017)p Black 42 w Fo(\(with-syslog-de)o(st)o
(ina)o(ti)o(on)35 b Fq(string)41 b(options)i(facility)h(mask)e(thunk)9
b Fo(\))40 b Fn(!)i Fq(value)739 4458 y Fo(With-syslog-dest)o(in)o(ati)
o(on)24 b Fr(dynamically)30 b(binds)h(parameters)e(of)i(the)g(implicit)
h(con-)739 4557 y(nection)e(to)g(the)h(syslog)d(facilit)n(y)i(and)g
(runs)g Fq(thunk)39 b Fr(within)31 b(those)f(parameter)e(bindings,)739
4657 y(returning)d(what)g Fq(thunk)34 b Fr(returns.)h(Eac)n(h)24
b(of)i(the)f(parameters)f(ma)n(y)h(b)r(e)h Fo(#f)e Fr(in)i(whic)n(h)f
(case)739 4757 y(the)j(previous)e(v)-5 b(alues)28 b(will)f(b)r(e)h
(used.)p Black 755 4907 a Fn(\017)p Black 42 w Fo(\(syslog)38
b Fq(level)43 b(message)6 b Fo(\))p Black 755 5006 a
Fn(\017)p Black 42 w Fo(\(syslog)38 b Fq(level)43 b(message)f(string)7
b Fo(\))p Black 2109 5255 a Fr(148)p Black eop end
%%Page: 149 157
TeXDict begin 149 156 bop 0 TeXcolorgray Black Black
Black Black 307 523 a Fn(\017)p Black 41 w Fo(\(syslog)39
b Fq(level)j(message)h(string)e(options)7 b Fo(\))p Black
307 623 a Fn(\017)p Black 41 w Fo(\(syslog)39 b Fq(level)j(message)h
(string)e(options)h(syslo)l(g-facility)7 b Fo(\))p Black
307 722 a Fn(\017)p Black 41 w Fo(\(syslog)39 b Fq(level)j(message)h
(channel)9 b Fo(\))291 877 y(Syslog)23 b Fr(actually)j(logs)f(a)h
(message.)35 b(Eac)n(h)25 b(of)h(the)h(parameters)d(of)i(the)h
(implicit)g(connec-)291 977 y(tion)f(\(except)h(for)g(the)g(log)f
(mask\))g(can)h(b)r(e)g(explicitly)g(sp)r(eci\014ed)g(as)f(w)n(ell)g
(for)h(the)g(curren)n(t)291 1076 y(call)22 b(to)g Fo(syslog)p
Fr(,)g(o)n(v)n(erriding)e(the)j(parameters)e(of)i(the)g(c)n(hannel.)35
b(The)22 b(parameters)f(rev)n(ert)291 1176 y(to)27 b(their)h(original)e
(v)-5 b(alues)27 b(after)g(the)h(call.)415 1277 y(The)g(\014nal)f(form)
h(sp)r(eci\014es)f(the)h(destination)g(of)g(the)g(log)e(message)h(as)g
(a)g(c)n(hannel;)g(see)291 1377 y(the)h(next)f(section.)291
1619 y Fe(Syslog)38 b(c)m(hannels)291 1776 y Fr(These)24
b(pro)r(cedures)g(allo)n(w)g(direct)g(manipulation)h(of)g(syslog)e(c)n
(hannels,)i(the)g(ob)5 b(jects)25 b(that)291 1875 y(represen)n(t)36
b(connections)g(to)h(the)h(syslog)d(facilit)n(y)-7 b(.)66
b(Note)37 b(that)h(it)f(is)g(not)h(necessary)d(to)291
1975 y(explicitly)27 b(op)r(en)h(a)f(syslog)f(c)n(hannel)h(to)h(do)f
(logging.)p Black 307 2130 a Fn(\017)p Black 41 w Fo
(\(open-syslog-chan)o(ne)o(l)p Fq(st)o(ring)36 b(options)43
b(facility)g(mask)9 b Fo(\))42 b Fn(!)f Fq(channel)p
Black 307 2229 a Fn(\017)p Black 41 w Fo(\(close-syslog-cha)o(nn)o(el)
-6 b Fq(channel)9 b Fo(\))p Black 307 2329 a Fn(\017)p
Black 41 w Fo(\(with-syslog-dest)o(in)o(ati)o(on)35 b
Fq(channel)42 b(thunk)9 b Fo(\))41 b Fn(!)g Fq(value)291
2484 y Fo(Open-syslog-cha)o(nne)o(l)26 b Fr(and)31 b
Fo(close-syslog-cha)o(nne)o(l)26 b Fr(create)k(and)i(destro)n(y)e(a)i
(con-)291 2583 y(nection)27 b(to)g(the)g(syslog)f(facilit)n(y)-7
b(,)27 b(resp)r(ectiv)n(ely)-7 b(.)36 b(The)27 b(sp)r(eci\014ed)h(form)
f(of)g(calling)g Fo(syslog)291 2683 y Fr(logs)f(to)i(the)g(sp)r
(eci\014ed)f(c)n(hannel.)415 2784 y Fo(With-syslog-chan)o(nel)14
b Fr(dynamically)20 b(binds)h(parameters)e(of)i(the)g(implicit)h
(connec-)291 2884 y(tion)32 b(to)f(the)i(syslog)d(facilit)n(y)i(to)f
(those)h(sp)r(eci\014ed)g(in)g Fq(channel)42 b Fr(and)31
b(runs)h Fq(thunk)40 b Fr(within)291 2984 y(those)27
b(parameter)f(bindings,)i(returning)e(what)i Fq(thunk)36
b Fr(returns.)291 3268 y Fj(9.11)135 b(Error)45 b(co)t(des)291
3453 y Fr(POSIX)40 b(functions)g(rep)r(ort)g(the)h(nature)f(of)g(an)g
(error)f(via)h Fq(system)h(err)l(or)h(numb)l(ers)7 b
Fr(|)291 3553 y(OS-sp)r(eci\014c)31 b(in)n(tegers)g(that)i(enco)r(de)f
(a)f(v)-5 b(ariet)n(y)32 b(of)g(di\013eren)n(t)g(error)e(situations.)50
b(A)n(t)33 b(the)291 3652 y(Sc)n(heme)g(lev)n(el,)i(error)d(n)n(um)n(b)
r(ers)h(are)g(represen)n(ted)g(as)g Fq(errnos)p Fr(,)j(ob)5
b(jects)33 b(that)h(sp)r(ecify)g(a)291 3752 y(name)23
b(for)g(the)i(error)c(sitation.)36 b(Errnos)22 b(are)g(de\014n)n(ted)j
(in)f(the)g(structures)f Fo(posix-errnos)291 3852 y Fr(and)k
Fo(posix)p Fr(.)415 3953 y(Curren)n(tly)-7 b(,)21 b(the)f(system)f(rep)
r(orts)g(suc)n(h)g(error)f(situations)h(b)n(y)h(raising)e(exceptions)h
(with)291 4053 y(condition)24 b(t)n(yp)r(e)h Fo(&os-error)p
Fr(.)32 b(The)24 b Fo(&os-error)d Fr(condition)j(t)n(yp)r(e)h(has)f(a)g
(\014eld)h Fo(code)e Fr(that)291 4152 y(con)n(tains)j(the)i(system)g
(error)d(n)n(um)n(b)r(er.)415 4254 y(There)d(are)g(t)n(w)n(o)g(v)-5
b(arieties)22 b(of)g(errnos)f(a)n(v)-5 b(ailable,)23
b Fq(name)l(d)g Fr(and)f Fq(anonymous)p Fr(.)36 b(A)23
b(named)291 4353 y(errno)f(is)h(one)g(for)f(whic)n(h)i(w)n(e)f(ha)n(v)n
(e)f(a)h(sym)n(b)r(olic)f(name,)i(suc)n(h)f(as)g Fo(fault)e
Fr(or)i Fo(intr)p Fr(.)34 b(Anon)n(y-)291 4453 y(mous)25
b(errnos,)f(for)h(whic)n(h)g(w)n(e)h(only)f(ha)n(v)n(e)f(the)i(curren)n
(t)e(op)r(erating)h(system's)g(errno)f(n)n(um-)291 4553
y(b)r(er,)j(ha)n(v)n(e)g(no)h(meaning)f(in)h(other)f(op)r(erating)g
(systems.)37 b(Named)28 b(errnos)e(preserv)n(e)g(their)291
4652 y(meaning)32 b(in)h(image)g(\014les.)52 b(Not)34
b(all)e(named)h(errnos)f(are)f(a)n(v)-5 b(ailable)32
b(from)h(all)g(OS's)f(and)291 4752 y(there)27 b(ma)n(y)g(b)r(e)h(m)n
(ultiple)g(names)f(for)g(a)g(single)h(OS)f(errno)f(n)n(um)n(b)r(er.)p
Black 307 4907 a Fn(\017)p Black 41 w Fo(\(errno)39 b
Fq(errno-name)6 b Fo(\))28 b Fn(!)g Fq(errno)1416 b Fr(syn)n(tax)p
Black 307 5006 a Fn(\017)p Black 41 w Fo(\(name->errno)37
b Fq(symb)l(ol)9 b Fo(\))41 b Fn(!)h Fq(errno)g(or)f
Fo(#f)p Black 1660 5255 a Fr(149)p Black eop end
%%Page: 150 158
TeXDict begin 150 157 bop 0 TeXcolorgray Black Black
Black Black 755 523 a Fn(\017)p Black 42 w Fo(\(integer->errno)35
b Fq(inte)l(ger)9 b Fo(\))41 b Fn(!)g Fq(errno)p Black
755 623 a Fn(\017)p Black 42 w Fo(\(errno?)47 b Fq(x)10
b Fo(\))40 b Fn(!)i Fq(b)l(o)l(ole)l(an)p Black 755 722
a Fn(\017)p Black 42 w Fo(\(errno-name)36 b Fq(errno)5
b Fo(\))42 b Fn(!)g Fq(symb)l(ol)g(or)g Fo(#f)p Black
755 822 a Fn(\017)p Black 42 w Fo(\(errno-os-numbe)o(r)35
b Fq(errno)5 b Fo(\))42 b Fn(!)g Fq(inte)l(ger)p Black
755 922 a Fn(\017)p Black 42 w Fo(\(errno=?)k Fq(errno0)c(errno1)11
b Fo(\))43 b Fn(!)e Fq(b)l(o)l(ole)l(an)739 1071 y Fr(The)18
b(syn)n(tax)g Fo(errno)e Fr(returns)i(a)g(\(named\))h(errno)e(asso)r
(ciated)g(with)i Fq(errno-name)6 b Fr(.)34 b Fo(Name->errno)739
1171 y Fr(returns)e(a)h(\(named\))g(errno)f(or)g Fo(#f)h
Fr(if)g(the)h(the)f(errno)f Fq(name)39 b Fr(is)33 b(not)g(supp)r(orted)
g(b)n(y)g(the)739 1270 y(op)r(erating)28 b(system.)41
b(The)29 b(errno)f(returned)h(b)n(y)h Fo(integer->errno)23
b Fr(is)29 b(a)g(named)g(errno)f(if)739 1370 y Fq(inte)l(ger)i
Fr(corresp)r(onds)19 b(to)i(a)g(named)g(errno)f(in)h(the)h(curren)n(t)e
(op)r(erating)g(system;)j(otherwise)739 1469 y(it)h(returns)f(an)g
(anon)n(ymous)f(errno.)35 b Fo(Errno-name)19 b Fr(returns)k(a)h(sym)n
(b)r(ol)f(if)30 b Fq(errno)g Fr(is)23 b(named)739 1569
y(and)29 b Fo(#f)f Fr(if)i(it)f(is)g(anon)n(ymous.)40
b Fo(Errno=?)f Fr(returns)28 b Fo(#t)h Fr(if)36 b Fq(errno0)41
b Fr(and)29 b Fq(errno1)41 b Fr(ha)n(v)n(e)28 b(the)739
1669 y(same)f(op)r(erating)f(system)i(n)n(um)n(b)r(er)f(and)h
Fo(#f)e Fr(if)j(they)e(do)h(not.)739 1901 y Fe(9.11.1)112
b(POSIX)37 b(errnos)739 2054 y Fr(The)28 b(follo)n(wing)e(lists)i(the)g
(names)f(of)g(the)h(POSIX)f(errnos.)932 2306 y Fo(toobig)446
b Fr(Argumen)n(t)27 b(list)h(to)r(o)f(long.)932 2406
y Fo(acces)490 b Fr(P)n(ermission)25 b(denied.)932 2506
y Fo(addrinuse)314 b Fr(Address)27 b(in)h(use.)932 2605
y Fo(addrnotavail)182 b Fr(Address)27 b(not)g(a)n(v)-5
b(ailable.)932 2705 y Fo(afnosupport)226 b Fr(Address)27
b(family)h(not)f(supp)r(orted.)932 2804 y Fo(again)490
b Fr(Resource)26 b(una)n(v)-5 b(ailable,)27 b(try)g(again.)932
2904 y Fo(already)402 b Fr(Connection)27 b(already)f(in)i(progress.)932
3004 y Fo(badf)534 b Fr(Bad)27 b(\014le)h(descriptor.)932
3103 y Fo(badmsg)446 b Fr(Bad)27 b(message.)932 3203
y Fo(busy)534 b Fr(Device)27 b(or)g(resource)f(busy)-7
b(.)932 3303 y Fo(canceled)358 b Fr(Op)r(eration)26 b(canceled.)932
3402 y Fo(child)490 b Fr(No)27 b(c)n(hild)h(pro)r(cesses.)932
3502 y Fo(connaborted)226 b Fr(Connection)27 b(ab)r(orted.)932
3601 y Fo(connrefused)226 b Fr(Connection)27 b(refused.)932
3701 y Fo(connreset)314 b Fr(Connection)27 b(reset.)932
3801 y Fo(deadlk)446 b Fr(Resource)26 b(deadlo)r(c)n(k)h(w)n(ould)g(o)r
(ccur.)932 3900 y Fo(destaddrreq)226 b Fr(Destination)27
b(address)g(required.)932 4000 y Fo(dom)578 b Fr(Mathematics)33
b(argumen)n(t)g(out)g(of)h(domain)f(of)h(func-)1642 4100
y(tion.)932 4199 y Fo(dquot)490 b Fr(Reserv)n(ed.)932
4299 y Fo(exist)g Fr(File)28 b(exists.)932 4398 y Fo(fault)490
b Fr(Bad)27 b(address.)932 4498 y Fo(fbig)534 b Fr(File)28
b(to)r(o)f(large.)932 4598 y Fo(hostunreach)226 b Fr(Host)27
b(is)h(unreac)n(hable.)932 4697 y Fo(idrm)534 b Fr(Iden)n(ti\014er)27
b(remo)n(v)n(ed.)932 4797 y Fo(ilseq)490 b Fr(Illegal)27
b(b)n(yte)g(sequence.)932 4897 y Fo(inprogress)270 b
Fr(Op)r(eration)26 b(in)i(progress.)932 4996 y Fo(intr)534
b Fr(In)n(terrupted)27 b(function.)p Black 2109 5255
a(150)p Black eop end
%%Page: 151 159
TeXDict begin 151 158 bop 0 TeXcolorgray Black Black
Black 484 523 a Fo(inval)489 b Fr(In)n(v)-5 b(alid)28
b(argumen)n(t.)484 623 y Fo(io)621 b Fr(I/O)27 b(error.)484
722 y Fo(isconn)445 b Fr(So)r(c)n(k)n(et)27 b(is)h(connected.)484
822 y Fo(isdir)489 b Fr(Is)28 b(a)f(directory)-7 b(.)484
922 y Fo(loop)533 b Fr(T)-7 b(o)r(o)27 b(man)n(y)g(lev)n(els)g(of)h
(sym)n(b)r(olic)f(links.)484 1021 y Fo(mfile)489 b Fr(T)-7
b(o)r(o)27 b(man)n(y)g(op)r(en)h(\014les.)484 1121 y
Fo(mlink)489 b Fr(T)-7 b(o)r(o)27 b(man)n(y)g(links.)484
1220 y Fo(msgsize)401 b Fr(Message)27 b(to)r(o)g(large.)484
1320 y Fo(multihop)357 b Fr(Reserv)n(ed.)484 1420 y Fo(nametoolong)225
b Fr(Filename)28 b(to)r(o)f(long.)484 1519 y Fo(netdown)401
b Fr(Net)n(w)n(ork)27 b(is)g(do)n(wn.)484 1619 y Fo(netreset)357
b Fr(Connection)28 b(ab)r(orted)f(b)n(y)g(net)n(w)n(ork.)484
1719 y Fo(netunreach)269 b Fr(Net)n(w)n(ork)27 b(unreac)n(hable.)484
1818 y Fo(nfile)489 b Fr(T)-7 b(o)r(o)27 b(man)n(y)g(\014les)h(op)r(en)
g(in)f(system.)484 1918 y Fo(nobufs)445 b Fr(No)28 b(bu\013er)g(space)f
(a)n(v)-5 b(ailable.)484 2017 y Fo(nodata)445 b Fr(No)31
b(message)f(is)h(a)n(v)-5 b(ailable)30 b(on)h(the)g(STREAM)g(head)1193
2117 y(read)c(queue.)484 2217 y Fo(nodev)489 b Fr(No)28
b(suc)n(h)f(device.)484 2316 y Fo(noent)489 b Fr(No)28
b(suc)n(h)f(\014le)h(or)f(directory)-7 b(.)484 2416 y
Fo(noexec)445 b Fr(Executable)27 b(\014le)h(format)f(error.)484
2516 y Fo(nolck)489 b Fr(No)28 b(lo)r(c)n(ks)f(a)n(v)-5
b(ailable.)484 2615 y Fo(nolink)445 b Fr(Reserv)n(ed.)484
2715 y Fo(nomem)489 b Fr(Not)28 b(enough)f(space.)484
2814 y Fo(nomsg)489 b Fr(No)28 b(message)e(of)i(the)g(desired)f(t)n(yp)
r(e.)484 2914 y Fo(noprotoopt)269 b Fr(Proto)r(col)26
b(not)i(a)n(v)-5 b(ailable.)484 3014 y Fo(nospc)489 b
Fr(No)28 b(space)f(left)h(on)f(device.)484 3113 y Fo(nosr)533
b Fr(No)28 b(STREAM)g(resources.)484 3213 y Fo(nostr)489
b Fr(Not)28 b(a)f(STREAM.)484 3313 y Fo(nosys)489 b Fr(F)-7
b(unction)29 b(not)e(supp)r(orted.)484 3412 y Fo(notconn)401
b Fr(The)28 b(so)r(c)n(k)n(et)f(is)g(not)h(connected.)484
3512 y Fo(notdir)445 b Fr(Not)28 b(a)f(directory)-7 b(.)484
3611 y Fo(notempty)357 b Fr(Directory)27 b(not)h(empt)n(y)-7
b(.)484 3711 y Fo(notsock)401 b Fr(Not)28 b(a)f(so)r(c)n(k)n(et.)484
3811 y Fo(notsup)445 b Fr(Not)28 b(supp)r(orted.)484
3910 y Fo(notty)489 b Fr(Inappropriate)26 b(I/O)h(con)n(trol)f(op)r
(eration.)484 4010 y Fo(nxio)533 b Fr(No)28 b(suc)n(h)f(device)h(or)e
(address.)484 4110 y Fo(opnotsupp)313 b Fr(Op)r(eration)27
b(not)h(supp)r(orted)f(on)g(so)r(c)n(k)n(et.)484 4209
y Fo(overflow)357 b Fr(V)-7 b(alue)28 b(to)r(o)f(large)g(to)g(b)r(e)h
(stored)f(in)h(data)f(t)n(yp)r(e.)484 4309 y Fo(perm)533
b Fr(Op)r(eration)27 b(not)h(p)r(ermitted.)484 4408 y
Fo(pipe)533 b Fr(Brok)n(en)26 b(pip)r(e.)484 4508 y Fo(proto)489
b Fr(Proto)r(col)26 b(error.)484 4608 y Fo(protonosupport)93
b Fr(Proto)r(col)26 b(not)i(supp)r(orted.)484 4707 y
Fo(prototype)313 b Fr(Proto)r(col)26 b(wrong)h(t)n(yp)r(e)g(for)g(so)r
(c)n(k)n(et.)484 4807 y Fo(range)489 b Fr(Result)28 b(to)r(o)g(large.)
484 4907 y Fo(rofs)533 b Fr(Read-only)27 b(\014le)h(system.)484
5006 y Fo(spipe)489 b Fr(In)n(v)-5 b(alid)28 b(seek.)p
Black 1660 5255 a(151)p Black eop end
%%Page: 152 160
TeXDict begin 152 159 bop 0 TeXcolorgray Black Black
Black 932 523 a Fo(srch)534 b Fr(No)27 b(suc)n(h)g(pro)r(cess.)932
623 y Fo(stale)490 b Fr(Reserv)n(ed.)932 722 y Fo(time)534
b Fr(Stream)27 b(io)r(ctl\(\))h(timeout.)932 822 y Fo(timedout)358
b Fr(Connection)27 b(timed)h(out.)932 922 y Fo(txtbsy)446
b Fr(T)-7 b(ext)27 b(\014le)h(busy)-7 b(.)932 1021 y
Fo(wouldblock)270 b Fr(Op)r(eration)26 b(w)n(ould)h(blo)r(c)n(k.)932
1121 y Fo(xdev)534 b Fr(Cross-device)25 b(link.)p Black
Black 739 1608 a Fj(9.12)135 b(C)45 b(to)h(Sc)l(heme)f(corresp)t
(ondence)739 1790 y Fr(The)32 b(follo)n(wing)f(table)h(lists)g(the)h
(Sc)n(heme)f(pro)r(cedures)f(that)h(corresp)r(ond)f(to)h(particular)739
1890 y(C)f(pro)r(cedures.)47 b(Not)32 b(all)f(of)g(the)h(Sc)n(heme)f
(pro)r(cedures)f(listed)i(are)e(part)h(of)g(the)h(POSIX)739
1989 y(in)n(terface.)906 2159 y(C)27 b(pro)r(cedure)341
b(Sc)n(heme)27 b(pro)r(cedure\(s\))906 2258 y Fo(access)523
b(accessible?)906 2358 y(asctime)479 b(date->string)906
2458 y(chdir)567 b(set-working-dire)o(ct)o(ory)o(!)906
2557 y(close)g(close-input-port)o(,)37 b(close-output-port)o(,)1780
2657 y(close-channel,)h(close-socket)906 2757 y(closedir)435
b(close-directory-)o(st)o(rea)o(m)906 2856 y(creat)567
b(open-file)906 2956 y(ctime)g(time->string)906 3055
y(dup)655 b(dup,)42 b(dup-switching-mo)o(de)906 3155
y(dup2)611 b(dup2)906 3255 y(exec[l|v][e|p|)p Fc(\017)p
Fo(])93 b(exec,)41 b(exec-with-environ)o(men)o(t,)1780
3354 y(exec-file,)e(exec-file-with-en)o(vir)o(on)o(men)o(t,)1780
3454 y(exec-with-alias)p 911 3554 27 4 v 937 3554 a(exit)580
b(exit)906 3653 y(fcntl)567 b(io-flags,)40 b(set-io-flags!,)1780
3753 y(close-on-exec,)e(set-close-on-exe)o(c!)906 3852
y(fork)611 b(fork,)41 b(fork-and-forget)906 3952 y(fstat)567
b(get-port-info)906 4052 y(getcwd)523 b(working-director)o(y)906
4151 y(getegid)479 b(get-effective-gr)o(ou)o(p-i)o(d)906
4251 y(getenv)523 b(lookup-environme)o(nt)o(-va)o(ri)o(abl)o(e,)1780
4351 y(environment-alis)o(t)906 4450 y(geteuid)479 b(get-effective-us)o
(er)o(-id)906 4550 y(getgid)523 b(get-group-id)906 4649
y(getgroups)391 b(get-groups)906 4749 y(getlogin)435
b(get-login-name)906 4849 y(getpid)523 b(get-process-id)906
4948 y(getppid)479 b(get-parent-proce)o(ss)o(-id)p Black
2109 5255 a Fr(152)p Black eop end
%%Page: 153 161
TeXDict begin 153 160 bop 0 TeXcolorgray Black Black
Black 457 523 a Fr(C)28 b(pro)r(cedure)341 b(Sc)n(heme)27
b(pro)r(cedure\(s\))457 623 y Fo(getuid)524 b(get-user-id)457
722 y(gmtime)g(time->local-dat)o(e)457 822 y(isatty)g(port-is-a-termi)o
(nal)o(?)457 922 y(link)612 b(link)457 1021 y(localtime)392
b(time->utc-date)457 1121 y(lstat)568 b(get-file/link-i)o(nfo)457
1220 y(mkdir)g(make-directory)457 1320 y(mkfifo)524 b(make-fifo)457
1420 y(mktime)g(date->time)457 1519 y(open)612 b(open-file)457
1619 y(opendir)480 b(open-directory-)o(str)o(ea)o(m)457
1719 y(pipe)612 b(open-pipe)457 1818 y(read)g(read-char,)39
b(read-block)457 1918 y(readdir)480 b(read-directory-)o(str)o(ea)o(m)
457 2017 y(readlink)436 b(read-symbolic-l)o(ink)457 2117
y(rename)524 b(rename)457 2217 y(rmdir)568 b(remove-director)o(y)457
2316 y(setgid)524 b(set-group-id!)457 2416 y(setegid)480
b(set-effective-g)o(rou)o(p-)o(id)o(!)457 2516 y(setuid)524
b(set-user-id!)457 2615 y(seteuid)480 b(set-effective-u)o(ser)o(-i)o
(d!)457 2715 y(stat)612 b(get-file-info)457 2814 y(strftime)436
b(format-date)457 2914 y(symlink)480 b(create-symbolic)o(-li)o(nk)457
3014 y(syslog)524 b(syslog)457 3113 y(time)612 b(current-time)457
3213 y(ttyname)480 b(port-terminal-n)o(ame)457 3313 y(umask)568
b(set-file-creati)o(on-)o(ma)o(sk)o(!)457 3412 y(uname)g(os-name,)40
b(os-node-name,)1332 3512 y(os-release-name,)d(os-version-name)o(,)1332
3611 y(machine-name)457 3711 y(unlink)524 b(unlink)457
3811 y(waitpid)480 b(wait-for-child-)o(pro)o(ce)o(ss)457
3910 y(write)568 b(write-char,)39 b(write-block)p Black
1660 5255 a Fr(153)p Black eop end
%%Page: 154 162
TeXDict begin 154 161 bop 0 TeXcolorgray Black Black
Black 739 1190 a Fp(Bibliograph)-6 b(y)p Black 780 1636
a Fr([1])p Black 42 w(Information)32 b(tec)n(hnology)h({)g(P)n(ortable)
f(Op)r(erating)g(System)i(In)n(terface)f(\(POSIX\).)910
1735 y(ISO/IEC)26 b(9945-1)f(ANSI/IEEE)h(Std)i(1003.1.)35
b(2nd)27 b(Ed.,)h(1996.)p Black 780 1913 a([2])p Black
42 w(William)41 b(Clinger)e(and)i(Jonathan)e(Rees.)76
b(Macros)39 b(that)i(w)n(ork.)74 b Fq(Principles)43 b(of)910
2013 y(Pr)l(o)l(gr)l(amming)30 b(L)l(anguages)p Fr(,)e(Jan)n(uary)e
(1991.)p Black 780 2190 a([3])p Black 42 w(William)31
b(Clinger)g(and)h(Jonathan)e(Rees)h(\(editors\).)49 b(Revised)2921
2160 y Fk(4)2989 2190 y Fr(rep)r(ort)31 b(on)g(the)h(al-)910
2290 y(gorithmic)37 b(language)g(Sc)n(heme.)70 b Fq(LISP)40
b(Pointers)f Fr(IV\(3\):1{55,)h(July-Septem)n(b)r(er)910
2390 y(1991.)p Black 780 2567 a([4])p Black 42 w(P)n(a)n(v)n(el)25
b(Curtis)i(and)g(James)f(Rauen.)37 b(A)27 b(mo)r(dule)h(system)f(for)g
(Sc)n(heme.)36 b Fq(A)n(CM)30 b(Con-)910 2667 y(fer)l(enc)l(e)g(on)f
(Lisp)i(and)f(F)-6 b(unctional)30 b(Pr)l(o)l(gr)l(amming,)f
Fr(pages)d(13{19,)g(1990.)p Black 780 2845 a([5])p Black
42 w(Ric)n(hard)h(Kelsey)g(and)h(Jonathan)g(Rees.)38
b(A)29 b(T)-7 b(ractable)27 b(Sc)n(heme)h(Implemen)n(tation.)910
2944 y Fq(Lisp)i(and)g(Symb)l(olic)h(Computation)e Fr(7:315{335)24
b(1994.)p Black 780 3122 a([6])p Black 42 w(Ric)n(hard)e(Kelsey)-7
b(,)23 b(Will)h(Clinger,)f(Jonathan)f(Rees)h(\(editors\).)29
b(Revised)3179 3092 y Fk(5)3240 3122 y Fr(Rep)r(ort)23
b(on)910 3221 y(the)29 b(Algorithmic)g(Language)e(Sc)n(heme.)41
b Fq(Higher-Or)l(der)32 b(and)g(Symb)l(olic)g(Computa-)910
3321 y(tion,)g Fr(V)-7 b(ol.)30 b(11,)h(No.)f(1,)h(Septem)n(b)r(er,)g
(1998.)44 b(and)30 b Fq(A)n(CM)j(SIGPLAN)f(Notic)l(es)p
Fr(,)g(V)-7 b(ol.)910 3421 y(33,)26 b(No.)i(9,)f(Octob)r(er,)g(1998.)p
Black 780 3598 a([7])p Black 42 w(Da)n(vid)33 b(MacQueen.)52
b(Mo)r(dules)34 b(for)e(Standard)h(ML.)54 b Fq(A)n(CM)35
b(Confer)l(enc)l(e)h(on)f(Lisp)910 3698 y(and)30 b(F)-6
b(unctional)30 b(Pr)l(o)l(gr)l(amming,)e Fr(1984.)p Black
780 3876 a([8])p Black 42 w(Jonathan)f(Rees)h(and)g(Bruce)f(Donald.)39
b(Program)25 b(mobile)j(rob)r(ots)g(in)g(Sc)n(heme.)39
b Fq(In-)910 3975 y(ternational)30 b(Confer)l(enc)l(e)h(on)e(R)l(ob)l
(otics)h(and)h(A)n(utomation,)c Fr(IEEE,)g(1992.)p Black
780 4153 a([9])p Black 42 w(John)k(H.)i(Repp)n(y)-7 b(.)50
b(Concurren)n(t)31 b(Programming)e(in)j(ML.)50 b(Cam)n(bridge)31
b(Univ)n(ersit)n(y)910 4252 y(Press,)26 b(1999.)p Black
739 4430 a([10])p Black 41 w(Mark)k(A.)i(Sheldon)f(and)h(Da)n(vid)f(K.)
g(Gi\013ord.)48 b(Static)31 b(dep)r(enden)n(t)i(t)n(yp)r(es)e(for)g
(\014rst-)910 4530 y(class)37 b(mo)r(dules.)69 b Fq(A)n(CM)41
b(Confer)l(enc)l(e)f(on)g(Lisp)h(and)f(F)-6 b(unctional)40
b(Pr)l(o)l(gr)l(amming,)910 4629 y Fr(pages)26 b(20{29,)f(1990.)p
Black 739 4807 a([11])p Black 41 w(Olin)47 b(Shiv)n(ers,)52
b(Brian)47 b(D.)i(Carlstrom,)i(Martin)d(Gasbic)n(hler)e(and)i(Mik)n(e)g
(Sp)r(er-)910 4907 y(b)r(er.)106 b(Scsh)51 b(Reference)g(Man)n(ual,)56
b(scsh)51 b(release)f(0.6.6.)105 b(Av)-5 b(ailable)51
b(at)g(URL)910 5006 y Fo(http://www.scsh)o(.ne)o(t/)o
Fr(.)p Black 2109 5255 a(154)p Black eop end
%%Page: 155 163
TeXDict begin 155 162 bop 0 TeXcolorgray Black Black
Black Black 291 523 a Fr([12])p Black 40 w(Olin)33 b(Shiv)n(ers.)53
b(A)34 b(univ)n(ersal)e(scripting)h(framew)n(ork,)g(or)f(Lam)n(b)r(da:)
48 b(the)33 b(ultimate)461 623 y(\\little)i(language".)55
b Fq(Concurr)l(ency)37 b(and)f(Par)l(al)t(lelism,)41
b(Pr)l(o)l(gr)l(amming,)e(Network-)461 722 y(ing,)31
b(and)f(Se)l(curity,)e Fr(pages)e(254{265,)e(Springer)j(1996.)35
b(Jo)n(xan)26 b(Ja\013ar)g(and)h(Roland)461 822 y(H.)h(C.)g(Y)-7
b(ap,)28 b(editors.)p Black 1660 5255 a(155)p Black eop
end
%%Page: 156 164
TeXDict begin 156 163 bop 0 TeXcolorgray Black Black
Black Black 739 999 a Fp(Index)p Black 739 1414 a Fo(accessible?)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(138)p Black 739 1514 a
Fo(add-signal-queue)o(-s)o(ign)o(al)o(!)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(133)p Black 739 1614 a Fo(after-time-rv)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(102)p Black 739 1714 a
Fo(always-rv)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(99)p Black
739 1815 a Fo(any)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(39)p
Black 739 1915 a Fo(any-match?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(79)p Black 739 2015 a Fo(any?)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(38)p Black 739 2115 a Fo(arithmetic-shift)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(40)p Black 739 2215 a Fo(array)p
Fr(,)p 0 0 1 TeXcolorrgb 26 w(43)p Black 739 2316 a Fo(array->vector)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(43)p Black 739 2416 a Fo(array-ref)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(43)p Black 739 2516 a Fo(array-set!)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(43)p Black 739 2616 a Fo(array-shape)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(43)p Black 739 2716 a Fo(array?)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(43)p Black 739 2817 a Fo(ascii-range)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(77)p Black 739 2917 a Fo(ascii-ranges)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(77)p Black 739 3017 a Fo(at-real-time-rv)
p Fr(,)p 0 0 1 TeXcolorrgb 21 w(102)p Black 739 3117
a Fo(atom?)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(38)p Black
739 3217 a Fo(atomically!)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(95)p Black 739 3410 a Fo(bit-count)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(40)p Black 739 3511 a Fo(bitwise-and)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(40)p Black 739 3611 a Fo(bitwise-ior)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(40)p Black 739 3711 a Fo(bitwise-not)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(40)p Black 739 3811 a Fo(bitwise-xor)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(40)p Black 739 3911 a Fo(byte-vector)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(40)p Black 739 4012 a Fo
(byte-vector->os-)o(st)o(rin)o(g)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(53)p Black 739 4112 a Fo(byte-vector-leng)o(th)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(40)p Black 739 4212 a Fo(byte-vector-ref)
p Fr(,)p 0 0 1 TeXcolorrgb 21 w(40)p Black 739 4312 a
Fo(byte-vector-set!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(40)p
Black 739 4412 a Fo(byte-vector=?)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(40)p Black 739 4513 a Fo(byte-vector?)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(40)p Black 739 4706 a Fo(call-atomically)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(95)p Black 739 4806 a Fo
(call-atomically!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(95)p
Black 739 4906 a Fo(call-ensuring-at)o(om)o(ici)o(ty)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(93)p Black 739 5006 a Fo
(call-ensuring-at)o(om)o(ici)o(ty)o(!)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(93)p Black Black Black 2213 1414 a Fo(call-imported-b)
o(ind)o(in)o(g-)o(2)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p
Black 2213 1514 a Fo(call-with-os-st)o(rin)o(g-)o(te)o(xt-)o(co)o(dec)o
Fr(,)p 0 0 1 TeXcolorrgb 14 w(54)p Black 2213 1614 a
Fo(cell-ref)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(41)p Black
2213 1714 a Fo(cell-set!)p Fr(,)p 0 0 1 TeXcolorrgb 24
w(41)p Black 2213 1814 a Fo(cell?)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(41)p Black 2213 1914 a Fo(channel?)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(100)p Black 2213 2014 a Fo(char->scalar-va)o(lue)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(83)p Black 2213 2114 a
Fo(char-foldcase)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(86)p
Black 2213 2214 a Fo(char-general-ca)o(teg)o(or)o(y)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(85)p Black 2213 2314 a
Fo(char-titlecase)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(86)p
Black 2213 2414 a Fo(char-titlecase?)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(86)p Black 2213 2514 a Fo(choose)p Fr(,)p 0 0 1
TeXcolorrgb 25 w(99)p Black 2213 2614 a Fo(close-all-but)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(144)p Black 2213 2715 a
Fo(close-directory)o(-st)o(re)o(am)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(136)p Black 2213 2815 a Fo(close-on-exec?)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(144)p Black 2213 2915 a Fo(close-socket)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(55)p Black 2213 3015 a
Fo(close-syslog-ch)o(ann)o(el)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(149)p Black 2213 3115 a Fo(compound-interf)o(ace)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(29)p Black 2213 3215 a
Fo(concatenate-sym)o(bol)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(39)p Black 2213 3315 a Fo(condvar-has-val)o(ue?)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(96)p Black 2213 3415 a Fo(condvar-value)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(96)p Black 2213 3515 a
Fo(condvar?)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(96)p Black
2213 3615 a Fo(copy-array)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(43)p Black 2213 3715 a Fo(create-symbolic)o(-li)o(nk)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(140)p Black 2213 3815 a
Fo(current-column)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(51)p
Black 2213 3915 a Fo(current-os-stri)o(ng-)o(te)o(xt)o(-co)o(de)o(c)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(54)p Black 2213 4015 a
Fo(current-proposa)o(l)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(96)p Black 2213 4115 a Fo(current-row)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(51)p Black 2213 4215 a Fo(current-thread)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(91)p Black 2213 4316 a
Fo(current-time)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(141)p
Black 2213 4506 a Fo(date->string)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(142)p Black 2213 4606 a Fo(date->time)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(142)p Black 2213 4706 a Fo(date-date-dst)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(141)p Black 2213 4806 a
Fo(date-hour)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(141)p Black
2213 4906 a Fo(date-minute)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(141)p Black 2213 5006 a Fo(date-month)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(141)p Black Black 2109 5255 a(156)p
Black eop end
%%Page: 157 165
TeXDict begin 157 164 bop 0 TeXcolorgray Black Black
Black 291 523 a Fo(date-month-day)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(141)p Black 291 623 a Fo(date-second)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(141)p Black 291 723 a Fo(date-week-day)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(141)p Black 291 823 a Fo(date-year)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(141)p Black 291 923 a Fo(date-year-day)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(141)p Black 291 1023 a
Fo(date?)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(141)p Black
291 1122 a Fo(debug-message)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(92)p Black 291 1222 a Fo(default-hash-fu)o(nct)o(io)o(n)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(50)p Black 291 1322 a Fo(define-exported)
o(-bi)o(nd)o(in)o(g)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(107)p
Black 291 1422 a Fo(define-imported)o(-bi)o(nd)o(in)o(g)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p Black 291 1522 a
Fo(define-interfac)o(e)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(28)p Black 291 1622 a Fo(define-record-d)o(isc)o(lo)o(se)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(44)p Black(,)p 0 0 1 TeXcolorrgb
27 w(46)p Black 291 1722 a Fo(define-record-r)o(esu)o(me)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(46)p Black(,)p 0 0 1 TeXcolorrgb
26 w(121)p Black 291 1822 a Fo(define-structur)o(e)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(26)p Black 291 1922 a Fo(define-text-cod)
o(ec)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(88)p Black 291 2022
a Fo(delete)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(39)p Black
291 2121 a Fo(delete-from-que)o(ue!)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(42)p Black 291 2221 a Fo(delq)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(39)p Black 291 2321 a Fo(delq!)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(39)p Black 291 2421 a Fo(dequeue!)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(42)p Black 291 2521 a Fo(dequeue-or-thun)o(k!)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(42)p Black 291 2621 a Fo(dequeue-or-valu)
o(e!)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(41)p Black 291 2721
a Fo(dequeue-signal!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(133)p
Black 291 2821 a Fo(directory-strea)o(m?)p Fr(,)p 0 0 1
TeXcolorrgb 21 w(136)p Black 291 2921 a Fo(dup)p Fr(,)p
0 0 1 TeXcolorrgb 26 w(144)p Black 291 3021 a Fo(dup-switching-m)o(ode)
o Fr(,)p 0 0 1 TeXcolorrgb 22 w(144)p Black 291 3120
a Fo(dup2)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(144)p Black
291 3308 a Fo(empty-queue!)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(42)p Black 291 3408 a Fo(enqueue!)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(41)p Black 291 3508 a Fo(enqueue-many!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(41)p Black 291 3608 a Fo(ensure-atomicit)
o(y!)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(93)p Black 291 3708
a Fo(enum-set->list)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(49)p
Black 291 3807 a Fo(enum-set-differ)o(enc)o(e)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(49)p Black 291 3907 a Fo(enum-set-inters)o(ect)o
(io)o(n)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(49)p Black 291
4007 a Fo(enum-set-member)o(?)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(49)p Black 291 4107 a Fo(enum-set-negati)o(on)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(49)p Black 291 4207 a Fo(enum-set-subset)
o(?)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(49)p Black 291 4307
a Fo(enum-set-union)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(49)p
Black 291 4407 a Fo(enum-set=?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(49)p Black 291 4507 a Fo(environment-ali)o(st)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(134)p Black 291 4607 a
Fo(errno-name)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(150)p Black
291 4707 a Fo(errno-os-number)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(150)p Black 291 4806 a Fo(errno=?)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(150)p Black 291 4906 a Fo(errno?)p Fr(,)p
0 0 1 TeXcolorrgb 25 w(150)p Black 291 5006 a Fo(every?)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(38)p Black Black Black
1764 523 a Fo(exact-match?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(79)p Black 1764 624 a Fo(exec)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(130)p Black 1764 726 a Fo(exec-file)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(130)p Black 1764 827 a Fo(exec-file-with-en)o(vi)o
(ron)o(me)o(nt)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(130)p
Black 1764 929 a Fo(exec-with-alias)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(130)p Black 1764 1030 a Fo(exec-with-environ)o(me)o(nt)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(130)p Black 1764 1131 a
Fo(exit)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(130)p Black 1764
1345 a Fo(fd-port?)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(144)p
Black 1764 1447 a Fo(file-info-device)p Fr(,)p 0 0 1
TeXcolorrgb 21 w(139)p Black 1764 1548 a Fo(file-info-group)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(139)p Black 1764 1649 a
Fo(file-info-inode)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(139)p
Black 1764 1751 a Fo(file-info-last-ac)o(ce)o(ss)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(139)p Black 1764 1852 a Fo(file-info-last-mo)o
(di)o(fic)o(at)o(io)o(n)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(139)p Black 1764 1954 a Fo(file-info-last-st)o(at)o(us-)o(ch)o(an)o
(ge)p Fr(,)p 0 0 1 TeXcolorrgb 16 w(139)p Black 1764
2055 a Fo(file-info-link-co)o(un)o(t)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(139)p Black 1764 2156 a Fo(file-info-mode)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(139)p Black 1764 2258 a Fo(file-info-name)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(138)p Black 1764 2359 a
Fo(file-info-owner)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(139)p
Black 1764 2460 a Fo(file-info-size)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(139)p Black 1764 2562 a Fo(file-info-type)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(138)p Black 1764 2663 a Fo(file-info?)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(138)p Black 1764 2765 a
Fo(file-mode+)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(139)p Black
1764 2866 a Fo(file-mode-)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(139)p Black 1764 2967 a Fo(file-mode->intege)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(140)p Black 1764 3069 a
Fo(file-mode<=?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(139)p
Black 1764 3170 a Fo(file-mode=?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(139)p Black 1764 3272 a Fo(file-mode>=?)p Fr(,)p
0 0 1 TeXcolorrgb 23 w(139)p Black 1764 3373 a Fo(file-mode?)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(139)p Black 1764 3474 a
Fo(file-options-on?)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(136)p
Black 1764 3576 a Fo(file-options-unio)o(n)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(136)p Black 1764 3677 a Fo(file-type-name)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(138)p Black 1764 3779 a
Fo(file-type?)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(138)p Black
1764 3880 a Fo(filter)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(39)p
Black 1764 3981 a Fo(filter!)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(39)p Black 1764 4083 a Fo(filter-map)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(39)p Black 1764 4184 a Fo(find-text-codec)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p Black 1764 4285 a
Fo(first)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(39)p Black 1764
4387 a Fo(fluid)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(52)p
Black 1764 4488 a Fo(fork)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(130)p Black 1764 4590 a Fo(fork-and-forget)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(130)p Black 1764 4691 a Fo(format-date)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(142)p Black 1764 4792 a
Fo(fresh-line)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(51)p Black
1764 5006 a Fo(general-category-)o(id)o Fr(,)p 0 0 1
TeXcolorrgb 22 w(85)p Black Black 1660 5255 a(157)p Black
eop end
%%Page: 158 166
TeXDict begin 158 165 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(general-category)o(-p)o(rim)o(ar)o(y-c)o(at)o(eg)o
(ory)o Fr(,)p 0 0 1 TeXcolorrgb 1071 623 a(85)p Black
739 723 a Fo(general-category)o(?)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(85)p Black 739 823 a Fo(get-effective-gr)o(ou)o(p-i)o(d)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black 739 923 a Fo
(get-effective-us)o(er)o(-id)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(134)p Black 739 1023 a Fo(get-file-info)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(138)p Black 739 1124 a Fo(get-file/link-in)o(fo)
o Fr(,)p 0 0 1 TeXcolorrgb 22 w(138)p Black 739 1224
a Fo(get-group-id)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(134)p
Black 739 1324 a Fo(get-groups)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(134)p Black 739 1424 a Fo(get-host-name)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(55)p Black 739 1524 a Fo(get-login-name)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black 739 1624 a
Fo(get-parent-proce)o(ss)o(-id)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(134)p Black 739 1725 a Fo(get-port-info)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(138)p Black 739 1825 a Fo(get-process-id)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black 739 1925 a
Fo(get-user-id)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(134)p
Black 739 2025 a Fo(group-id->group-)o(in)o(fo)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(135)p Black 739 2125 a Fo(group-id->intege)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black 739 2226 a
Fo(group-id=?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(135)p Black
739 2326 a Fo(group-id?)p Fr(,)p 0 0 1 TeXcolorrgb 24
w(135)p Black 739 2426 a Fo(group-info-id)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(135)p Black 739 2526 a Fo(group-info-membe)o(rs)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black 739 2626 a
Fo(group-info-name)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(135)p
Black 739 2726 a Fo(group-info?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(135)p Black 739 2827 a Fo(guard)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(99)p Black 739 2927 a Fo(guess-port-text-)o(co)o(dec)o(-a)o(cco)o
(rd)o(in)o(g-t)o(o-)o(bom)o Fr(,)p 0 0 1 TeXcolorrgb
1071 3026 a(87)p Black 739 3219 a Fo(have-system?)p Fr(,)p
0 0 1 TeXcolorrgb 23 w(54)p Black 739 3411 a Fo(i/o-flags)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(144)p Black 739 3511 a
Fo(identity)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(38)p Black
739 3612 a Fo(ignore-case)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(78)p Black 739 3712 a Fo(import-definitio)o(n)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p Black 739 3812 a
Fo(import-dynamic-e)o(xt)o(ern)o(al)o(s)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(110)p Black 739 3912 a Fo(import-lambda-de)o(fi)o(nit)
o(io)o(n-2)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(109)p Black
739 4012 a Fo(integer->errno)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(150)p Black 739 4113 a Fo(integer->file-mo)o(de)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(140)p Black 739 4213 a
Fo(integer->group-i)o(d)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(135)p Black 739 4313 a Fo(integer->process)o(-i)o(d)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(130)p Black 739 4413 a
Fo(integer->signal)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(131)p
Black 739 4513 a Fo(integer->user-id)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(135)p Black 739 4613 a Fo(intersection)p Fr(,)p
0 0 1 TeXcolorrgb 23 w(77)p Black 739 4714 a Fo(invalidate-curre)o(nt)o
(-pr)o(op)o(osa)o(l!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(95)p
Black 739 4906 a Fo(jar-put!)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(101)p Black 739 5006 a Fo(jar-take)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(102)p Black Black Black 2213 523 a Fo(jar-take-rv)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(102)p Black 2213 623 a
Fo(jar?)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(101)p Black 2213
815 a Fo(kill-thread!)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(92)p
Black 2213 1008 a Fo(latin-1-codec)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(87)p Black 2213 1108 a Fo(let-fluid)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(52)p Black 2213 1208 a Fo(let-fluids)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(52)p Black 2213 1308 a
Fo(limit-output)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(51)p
Black 2213 1408 a Fo(link)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(137)p Black 2213 1508 a Fo(list->queue)p Fr(,)p
0 0 1 TeXcolorrgb 23 w(41)p Black 2213 1609 a Fo(list-delete-nei)o(ghb)
o(or)o(-d)o(ups)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(69)p
Black(,)p 0 0 1 TeXcolorrgb 27 w(73)p Black 2213 1709
a Fo(list-delete-nei)o(ghb)o(or)o(-d)o(ups)o(!)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(73)p Black 2213 1809 a Fo(list-directory)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(136)p Black 2213 1909 a
Fo(list-merge)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(68)p Black(,)p
0 0 1 TeXcolorrgb 27 w(71)p Black 2213 2009 a Fo(list-merge!)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(68)p Black(,)p 0 0 1 TeXcolorrgb
26 w(71)p Black 2213 2109 a Fo(list-merge-sort)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(71)p Black 2213 2210 a Fo(list-merge-sort)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(71)p Black 2213 2310 a
Fo(list-sort)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(68)p Black
2213 2410 a Fo(list-sort!)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(68)p Black 2213 2510 a Fo(list-sorted?)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(68)p Black(,)p 0 0 1 TeXcolorrgb
27 w(71)p Black 2213 2610 a Fo(list-stable-sor)o(t)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(68)p Black 2213 2710 a
Fo(list-stable-sor)o(t!)p Fr(,)p 0 0 1 TeXcolorrgb 21
w(68)p Black 2213 2811 a Fo(load-dynamic-ex)o(ter)o(na)o(ls)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(110)p Black 2213 2911 a
Fo(lock?)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(97)p Black 2213
3011 a Fo(lookup-environm)o(ent)o(-v)o(ar)o(iab)o(le)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black 2213 3111 a
Fo(lookup-exported)o(-bi)o(nd)o(in)o(g)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(108)p Black 2213 3211 a Fo(lookup-imported)o(-bi)o(nd)
o(in)o(g)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(107)p Black
2213 3404 a Fo(machine-name)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(135)p Black 2213 3504 a Fo(make-array)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(43)p Black 2213 3604 a Fo(make-byte-vecto)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(40)p Black 2213 3704 a
Fo(make-cell)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(41)p Black
2213 3804 a Fo(make-channel)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(100)p Black 2213 3904 a Fo(make-condvar)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(96)p Black 2213 4005 a Fo(make-date)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(141)p Black 2213 4105 a
Fo(make-directory)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(137)p
Black 2213 4205 a Fo(make-empty-prof)o(ile)o(-d)o(at)o(a)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(56)p Black 2213 4305 a
Fo(make-fifo)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(138)p Black
2213 4405 a Fo(make-fluid)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(52)p Black 2213 4505 a Fo(make-integer-ta)o(ble)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(50)p Black 2213 4606 a
Fo(make-jar)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(101)p Black
2213 4706 a Fo(make-lock)p Fr(,)p 0 0 1 TeXcolorrgb 24
w(97)p Black 2213 4806 a Fo(make-os-string)p Fr(,)p 0 0 1
TeXcolorrgb 21 w(53)p Black 2213 4906 a Fo(make-placeholde)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(98)p Black(,)p 0 0 1 TeXcolorrgb
26 w(101)p Black 2213 5006 a Fo(make-proposal)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(96)p Black Black 2109 5255 a(158)p
Black eop end
%%Page: 159 167
TeXDict begin 159 166 bop 0 TeXcolorgray Black Black
Black 291 523 a Fo(make-queue)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(41)p Black 291 623 a Fo(make-record)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(45)p Black 291 723 a Fo(make-record-typ)o(e)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(46)p Black 291 823 a Fo(make-regexp)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(145)p Black 291 923 a Fo(make-shared-arr)
o(ay)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(43)p Black 291 1023
a Fo(make-signal-que)o(ue)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(133)p Black 291 1122 a Fo(make-sparse-vec)o(tor)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(41)p Black 291 1222 a Fo(make-string-inp)
o(ut-)o(po)o(rt)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(51)p
Black 291 1322 a Fo(make-string-out)o(put)o(-p)o(or)o(t)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(51)p Black 291 1422 a Fo(make-string-tab)
o(le)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(50)p Black 291 1522
a Fo(make-symbol-tab)o(le)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(50)p Black 291 1622 a Fo(make-syslog-mas)o(k)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(148)p Black 291 1722 a Fo(make-syslog-opt)o(ion)
o(s)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(146)p Black 291 1822
a Fo(make-table)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(50)p
Black 291 1922 a Fo(make-table-immu)o(tab)o(le)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(50)p Black 291 2022 a Fo(make-table-make)
o(r)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(50)p Black 291 2122
a Fo(make-text-codec)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(88)p
Black 291 2221 a Fo(make-time)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(141)p Black 291 2321 a Fo(make-tracking-i)o(npu)o(t-)o(po)o(rt)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(51)p Black 291 2421 a Fo(make-tracking-o)
o(utp)o(ut)o(-p)o(ort)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(51)p
Black 291 2521 a Fo(match)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(79)p Black 291 2621 a Fo(match-end)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(79)p Black(,)p 0 0 1 TeXcolorrgb 26
w(145)p Black 291 2721 a Fo(match-start)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(79)p Black(,)p 0 0 1 TeXcolorrgb 27
w(145)p Black 291 2821 a Fo(match-submatche)o(s)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(79)p Black 291 2921 a Fo(match?)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(145)p Black 291 3021 a
Fo(maybe-commit)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(95)p
Black 291 3121 a Fo(maybe-commit-an)o(d-b)o(lo)o(ck)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(98)p Black 291 3220 a Fo(maybe-commit-an)
o(d-b)o(lo)o(ck)o(-on)o(-q)o(ueu)o(e)p Fr(,)p 0 0 1 TeXcolorrgb
14 w(98)p Black 291 3320 a Fo(maybe-commit-an)o(d-m)o(ak)o(e-)o(rea)o
(dy)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(98)p Black 291 3420
a Fo(maybe-commit-an)o(d-s)o(et)o(-c)o(ond)o(va)o(r!)p
Fr(,)p 0 0 1 TeXcolorrgb 14 w(96)p Black 291 3520 a Fo(maybe-commit-an)
o(d-w)o(ai)o(t-)o(for)o(-c)o(ond)o(va)o(r)p Fr(,)p 0 0 1
TeXcolorrgb 623 3620 a(96)p Black 291 3720 a Fo(maybe-dequeue!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(42)p Black 291 3820 a Fo(maybe-dequeue-s)
o(ign)o(al)o(!)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(133)p
Black 291 3920 a Fo(maybe-dequeue-t)o(hre)o(ad)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(98)p Black 291 4019 a Fo(maybe-obtain-lo)
o(ck)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(97)p Black 291 4119
a Fo(maybe-queue-hea)o(d)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(41)p Black 291 4219 a Fo(memq?)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(38)p Black 291 4319 a Fo(modify)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(27)p Black 291 4507 a Fo(n=)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(38)p Black 291 4607 a Fo(name->errno)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(149)p Black 291 4707 a Fo(name->group-inf)o(o)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black 291 4806 a
Fo(name->signal)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(131)p
Black 291 4906 a Fo(name->user-info)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(135)p Black 291 5006 a Fo(negate)p Fr(,)p 0 0 1
TeXcolorrgb 25 w(77)p Black Black Black 1764 523 a Fo(neq?)p
Fr(,)p 0 0 1 TeXcolorrgb 26 w(38)p Black 1764 623 a Fo(never-rv)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(99)p Black 1764 723 a Fo
(new-external-even)o(t)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(123)p Black 1764 823 a Fo(new-external-even)o(t-)o(uid)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(123)p Black 1764 923 a
Fo(no-op)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(38)p Black 1764
1023 a Fo(no-submatches)p Fr(,)p 0 0 1 TeXcolorrgb 23
w(79)p Black 1764 1123 a Fo(null-list?)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(38)p Black 1764 1223 a Fo(null-text-codec)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p Black 1764 1414 a
Fo(obtain-lock)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(97)p Black
1764 1514 a Fo(on-queue?)p Fr(,)p 0 0 1 TeXcolorrgb 24
w(42)p Black 1764 1614 a Fo(one-of)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(78)p Black 1764 1714 a Fo(open-directory-st)o(re)o(am)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(136)p Black 1764 1814 a
Fo(open-file)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(136)p Black
1764 1914 a Fo(open-pipe)p Fr(,)p 0 0 1 TeXcolorrgb 24
w(143)p Black 1764 2014 a Fo(open-socket)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(55)p Black 1764 2114 a Fo(open-syslog-chann)o(el)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(149)p Black 1764 2214 a(OS)28
b(string,)p 0 0 1 TeXcolorrgb 27 w(53)p Black 1764 2314
a Fo(os-name)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(135)p Black
1764 2414 a Fo(os-node-name)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(135)p Black 1764 2514 a Fo(os-release-name)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(135)p Black 1764 2615 a Fo(os-string->byte-v)o
(ec)o(tor)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(54)p Black
1764 2715 a Fo(os-string->string)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(54)p Black 1764 2815 a Fo(os-string-text-co)o(de)o(c)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(54)p Black 1764 2915 a
Fq(os-string-thing)8 b Fr(,)p 0 0 1 TeXcolorrgb 27 w(53)p
Black 1764 3015 a Fo(os-string=?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(54)p Black 1764 3115 a Fo(os-string?)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(53)p Black 1764 3215 a Fo(os-version-name)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black 1764 3405 a
Fo(p)p Fr(,)p 0 0 1 TeXcolorrgb 28 w(40)p Black 1764
3505 a Fo(partition-list)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(39)p Black 1764 3605 a Fo(partition-list!)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(39)p Black 1764 3705 a Fo(placeholder-set!)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(98)p Black(,)p 0 0 1 TeXcolorrgb
27 w(101)p Black 1764 3805 a Fo(placeholder-value)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(98)p Black(,)p 0 0 1 TeXcolorrgb
27 w(101)p Black 1764 3906 a Fo(placeholder-value)o(-r)o(v)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(101)p Black 1764 4006 a
Fo(placeholder?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(98)p
Black(,)p 0 0 1 TeXcolorrgb 27 w(101)p Black 1764 4106
a Fo(port->fd)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(144)p Black
1764 4206 a Fo(port-is-a-termina)o(l?)o Fr(,)p 0 0 1
TeXcolorrgb 22 w(144)p Black 1764 4306 a Fo(port-terminal-nam)o(e)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(144)p Black 1764 4406 a
Fo(port-text-codec)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p
Black 1764 4506 a Fo(prefix)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(27)p Black 1764 4606 a Fo(pretty-print)p Fr(,)p
0 0 1 TeXcolorrgb 23 w(40)p Black 1764 4706 a Fo(primary-category?)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(85)p Black 1764 4806 a
Fo(process-id->integ)o(er)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(130)p Black 1764 4906 a Fo(process-id-exit-s)o(ta)o(tus)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(130)p Black 1764 5006 a
Fo(process-id-termin)o(at)o(ing)o(-s)o(ig)o(nal)o Fr(,)p
0 0 1 TeXcolorrgb 15 w(130)p Black Black 1660 5255 a(159)p
Black eop end
%%Page: 160 168
TeXDict begin 160 167 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(process-id=?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(130)p Black 739 625 a Fo(process-id?)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(130)p Black 739 726 a Fo(profile-data-end)o(ti)o(me)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(56)p Black 739 828 a Fo(profile-data-gcr)
o(un)o(s)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(56)p Black 739
929 a Fo(profile-data-int)o(er)o(rup)o(tt)o(ime)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(56)p Black 739 1031 a Fo(profile-data-mem)o(or)o
(yus)o(e)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(56)p Black 739
1133 a Fo(profile-data-run)o(ti)o(me)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(56)p Black 739 1234 a Fo(profile-data-sam)o(pl)o(es)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(56)p Black 739 1336 a Fo
(profile-data-sta)o(rt)o(tim)o(e)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(56)p Black 739 1438 a Fo(profile-display)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(56)p Black 739 1539 a Fo(profile-display-)o(fl)o
(at)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(56)p Black 739 1641
a Fo(profile-display-)o(ov)o(erv)o(ie)o(w)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(56)p Black 739 1742 a Fo(profile-display-)o(tr)o(ee)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(56)p Black 739 1844 a Fo
(profile-function)o(-c)o(all)o(s)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(56)p Black 739 1946 a Fo(profile-function)o(-h)o(ist)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(57)p Black 739 2047 a Fo
(profile-function)o(-m)o(emo)o(ry)o(use)o Fr(,)p 0 0 1
TeXcolorrgb 22 w(57)p Black 739 2149 a Fo(profile-function)o(-n)o(onr)o
(ec)o(cal)o(ls)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(56)p Black
739 2250 a Fo(profile-function)o(-o)o(ccu)o(rs)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(56)p Black 739 2352 a Fo(profile-function)o(-r)o
(ecc)o(al)o(ls)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(56)p Black
739 2454 a Fo(profile-function)o(-t)o(ime)o(-c)o(umu)o(la)o(ti)o(ve)p
Fr(,)p 0 0 1 TeXcolorrgb 1071 2553 a(57)p Black 739 2655
a Fo(profile-function)o(-t)o(ime)o(-s)o(elf)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(57)p Black 739 2756 a Fo(profile-function)o(-t)o
(ime)o(sh)o(are)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(57)p
Black 739 2858 a Fo(profile-thunk)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(56)p Black 739 2960 a Fo(proposal-active?)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(95)p Black 739 3061 a Fo(provisional-byte)o(-v)o
(ect)o(or)o(-re)o(f)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(94)p
Black 739 3163 a Fo(provisional-byte)o(-v)o(ect)o(or)o(-se)o(t!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(94)p Black 739 3264 a Fo(provisional-car)
p Fr(,)p 0 0 1 TeXcolorrgb 21 w(93)p Black 739 3366 a
Fo(provisional-cdr)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(93)p
Black 739 3468 a Fo(provisional-cell)o(-r)o(ef)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(93)p Black 739 3569 a Fo(provisional-cell)o(-s)o
(et!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(94)p Black 739 3671
a Fo(provisional-set-)o(ca)o(r!)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(93)p Black 739 3773 a Fo(provisional-set-)o(cd)o(r!)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(93)p Black 739 3874 a Fo
(provisional-stri)o(ng)o(-re)o(f)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(94)p Black 739 3976 a Fo(provisional-stri)o(ng)o(-se)o(t!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(94)p Black 739 4077 a Fo
(provisional-vect)o(or)o(-re)o(f)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(94)p Black 739 4179 a Fo(provisional-vect)o(or)o(-se)o(t!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(94)p Black 739 4397 a Fo(queue->list)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(42)p Black 739 4498 a Fo(queue-empty?)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(41)p Black 739 4600 a Fo(queue-head)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(41)p Black 739 4701 a Fo
(queue-head-or-th)o(un)o(k)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(41)p Black 739 4803 a Fo(queue-head-or-va)o(lu)o(e)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(41)p Black 739 4905 a Fo(queue-length)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(42)p Black 739 5006 a Fo(queue?)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(41)p Black Black Black
2213 523 a Fo(range)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(77)p
Black 2213 623 a Fo(ranges)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(77)p Black 2213 723 a Fo(read-directory-)o(str)o(ea)o(m)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(136)p Black 2213 823 a
Fo(read-symbolic-l)o(ink)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(140)p Black 2213 923 a Fo(receive)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(100)p Black 2213 1023 a Fo(receive-rv)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(100)p Black 2213 1122 a Fo(record)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(45)p Black 2213 1222 a
Fo(record-accessor)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(46)p
Black 2213 1322 a Fo(record-construc)o(tor)o Fr(,)p 0 0 1
TeXcolorrgb 22 w(46)p Black 2213 1422 a Fo(record-length)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(45)p Black 2213 1522 a
Fo(record-modifier)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(46)p
Black 2213 1622 a Fo(record-predicat)o(e)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(46)p Black 2213 1722 a Fo(record-ref)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(45)p Black 2213 1822 a
Fo(record-set!)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(45)p Black
2213 1922 a Fo(record-type)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(45)p Black 2213 2022 a Fo(record-type-fie)o(ld-)o(na)o(me)o(s)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(46)p Black 2213 2121 a
Fo(record-type-nam)o(e)p Fr(,)p 0 0 1 TeXcolorrgb 22
w(46)p Black 2213 2221 a Fo(record-type?)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(46)p Black 2213 2321 a Fo(record?)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(45)p Black 2213 2421 a
Fo(regexp-match)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(145)p
Black 2213 2521 a Fo(regexp?)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(76)p Black(,)p 0 0 1 TeXcolorrgb 27 w(145)p Black
2213 2621 a Fo(release-lock)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(97)p Black 2213 2721 a Fo(relinquish-time)o(sli)o(ce)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(91)p Black 2213 2821 a
Fo(reload-dynamic-)o(ext)o(er)o(na)o(ls)p Fr(,)p 0 0 1
TeXcolorrgb 21 w(110)p Black 2213 2921 a Fo(remap-file-desc)o(rip)o(to)
o(rs)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(144)p Black 2213
3021 a Fo(remove-current-)o(pro)o(po)o(sa)o(l!)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(95)p Black 2213 3120 a Fo(remove-director)o(y)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(138)p Black 2213 3220 a
Fo(remove-duplicat)o(es)p Fr(,)p 0 0 1 TeXcolorrgb 21
w(39)p Black 2213 3320 a Fo(remove-signal-q)o(ueu)o(e-)o(si)o(gna)o(l!)
o Fr(,)p 0 0 1 TeXcolorrgb 22 w(133)p Black 2213 3420
a Fo(rename)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(138)p Black
2213 3520 a Fo(repeat)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(78)p
Black 2213 3620 a Fo(reverse!)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(39)p Black 2213 3807 a Fo(scalar-value->c)o(har)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(83)p Black 2213 3907 a
Fo(scalar-value?)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(83)p
Black 2213 4007 a Fo(select)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(100)p Black 2213 4107 a Fo(send)p Fr(,)p 0 0 1 TeXcolorrgb
26 w(100)p Black 2213 4207 a Fo(send-rv)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(100)p Black 2213 4307 a Fo(sequence)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(78)p Black 2213 4407 a
Fo(set)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(77)p Black 2213
4507 a Fo(set-close-on-ex)o(ec?)o(!)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(144)p Black 2213 4607 a Fo(set-condvar-has)o(-va)o(lu)o(e?)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(96)p Black 2213 4707 a
Fo(set-condvar-val)o(ue!)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(96)p Black 2213 4806 a Fo(set-current-pro)o(pos)o(al)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(96)p Black 2213 4906 a
Fo(set-effective-g)o(rou)o(p-)o(id)o(!)p Fr(,)p 0 0 1
TeXcolorrgb 22 w(134)p Black 2213 5006 a Fo(set-effective-u)o(ser)o(-i)
o(d!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black Black
2109 5255 a(160)p Black eop end
%%Page: 161 169
TeXDict begin 161 168 bop 0 TeXcolorgray Black Black
Black 291 523 a Fo(set-environment)o(-va)o(ri)o(ab)o(le!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p Black 291 623 a Fo(set-file-creati)
o(on-)o(ma)o(sk)o(!)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(137)p
Black 291 722 a Fo(set-group-id!)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(134)p Black 291 822 a Fo(set-i/o-flags!)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(144)p Black 291 922 a Fo(set-port-text-c)o(ode)o
(c!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p Black 291 1021
a Fo(set-port-text-c)o(ode)o(c-)o(ac)o(cor)o(di)o(ng-)o(to)o(-bo)o(m!)o
Fr(,)p 0 0 1 TeXcolorrgb 623 1121 a(87)p Black 291 1220
a Fo(set-user-id!)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(134)p
Black 291 1320 a Fo(set-working-dir)o(ect)o(or)o(y!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(136)p Black 291 1420 a
Fo(shared-binding-)o(is-)o(im)o(po)o(rt?)o Fr(,)p 0 0 1
TeXcolorrgb 22 w(108)p Black 291 1519 a Fo(shared-binding-)o(nam)o(e)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(108)p Black 291 1619 a
Fo(shared-binding-)o(ref)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(107)p Black 291 1719 a Fo(shared-binding-)o(set)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(108)p Black 291 1818 a
Fo(shared-binding?)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p
Black 291 1918 a Fo(signal-name)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(131)p Black 291 2017 a Fo(signal-os-numbe)o(r)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(131)p Black 291 2117 a
Fo(signal-process)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(133)p
Black 291 2217 a Fo(signal-queue-mo)o(nit)o(or)o(ed)o(-si)o(gn)o(als)o
Fr(,)p 0 0 1 TeXcolorrgb 15 w(133)p Black 291 2316 a
Fo(signal-queue?)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(133)p
Black 291 2416 a Fo(signal=?)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(131)p Black 291 2516 a Fo(signal?)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(131)p Black 291 2615 a Fo(sleep)p Fr(,)p
0 0 1 TeXcolorrgb 25 w(91)p Black 291 2715 a Fo(socket-accept)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(55)p Black 291 2814 a Fo(socket-client)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(55)p Black 291 2914 a Fo(socket-port-num)
o(ber)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(55)p Black 291
3014 a Fo(sparse-vector->)o(lis)o(t)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(41)p Black 291 3113 a Fo(sparse-vector-r)o(ef)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(41)p Black 291 3213 a Fo(sparse-vector-s)
o(et!)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(41)p Black 291
3313 a Fo(spawn)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(91)p
Black 291 3412 a Fo(string->os-byte)o(-ve)o(ct)o(or)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(54)p Black 291 3512 a Fo(string->os-stri)
o(ng)p Fr(,)p 0 0 1 TeXcolorrgb 21 w(53)p Black 291 3611
a Fo(string-downcase)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(86)p
Black 291 3711 a Fo(string-end)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(77)p Black 291 3811 a Fo(string-foldcase)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(86)p Black 291 3910 a Fo(string-hash)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(50)p Black 291 4010 a Fo(string-output-p)
o(ort)o(-o)o(ut)o(put)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(51)p
Black 291 4110 a Fo(string-start)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(77)p Black 291 4209 a Fo(string-titlecas)o(e)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(86)p Black 291 4309 a Fo(string-upcase)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(86)p Black 291 4408 a Fo(submatch)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(79)p Black 291 4508 a Fo(subset)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(27)p Black 291 4608 a Fo(subtract)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(77)p Black 291 4707 a Fo(symbol-hash)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(50)p Black 291 4807 a Fo(sync)p
Fr(,)p 0 0 1 TeXcolorrgb 26 w(100)p Black 291 4907 a
Fo(syslog)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(148)p Black(,)p
0 0 1 TeXcolorrgb 26 w(149)p Black 291 5006 a Fo(syslog-facility)o(?)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(147)p Black Black Black
1764 523 a Fo(syslog-level?)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(147)p Black 1764 623 a Fo(syslog-mask-all)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(148)p Black 1764 723 a Fo(syslog-mask-upto)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(148)p Black 1764 823 a
Fo(syslog-mask?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(148)p
Black 1764 923 a Fo(syslog-option?)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(146)p Black 1764 1023 a Fo(syslog-options?)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(146)p Black 1764 1123 a Fo(system)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(54)p Black 1764 1314 a
Fo(table->entry-list)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(50)p
Black 1764 1414 a Fo(table-ref)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(50)p Black 1764 1514 a Fo(table-set!)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(50)p Black 1764 1614 a Fo(table-walk)p
Fr(,)p 0 0 1 TeXcolorrgb 24 w(50)p Black 1764 1714 a
Fo(table?)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(50)p Black
1764 1814 a Fo(terminate-current)o(-t)o(hre)o(ad)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(91)p Black 1764 1914 a Fo(terminate-thread!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(92)p Black 1764 2014 a
Fo(text)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(78)p Black 1764
2114 a(text)28 b(co)r(dec,)p 0 0 1 TeXcolorrgb 28 w(87)p
Black 1764 2214 a Fo(text-codec-decode)o(-c)o(har)o(-p)o(ro)o(c)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(88)p Black 1764 2314 a
Fo(text-codec-encode)o(-c)o(har)o(-p)o(ro)o(c)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(88)p Black 1764 2414 a Fo(text-codec-names)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(88)p Black 1764 2514 a
Fo(text-codec?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(87)p Black
1764 2615 a Fo(thread-name)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(92)p Black 1764 2715 a Fo(thread-queue-empt)o(y?)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(98)p Black 1764 2815 a
Fo(thread-uid)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(92)p Black
1764 2915 a Fo(thread?)p Fr(,)p 0 0 1 TeXcolorrgb 25
w(91)p Black 1764 3015 a Fo(time->local-date)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(142)p Black 1764 3115 a Fo(time->string)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(141)p Black 1764 3215 a
Fo(time->utc-date)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(142)p
Black 1764 3315 a Fo(time-seconds)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(141)p Black 1764 3415 a Fo(time<=?)p Fr(,)p 0 0 1
TeXcolorrgb 25 w(141)p Black 1764 3515 a Fo(time<?)p
Fr(,)p 0 0 1 TeXcolorrgb 25 w(141)p Black 1764 3615 a
Fo(time=?)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(141)p Black
1764 3715 a Fo(time>=?)p Fr(,)p 0 0 1 TeXcolorrgb 25
w(141)p Black 1764 3815 a Fo(time>?)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(141)p Black 1764 3915 a Fo(time?)p Fr(,)p 0 0 1
TeXcolorrgb 26 w(141)p Black 1764 4106 a Fo(undefine-exported)o(-b)o
(ind)o(in)o(g)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p Black
1764 4206 a Fo(undefine-imported)o(-b)o(ind)o(in)o(g)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(108)p Black 1764 4306 a
Fo(union)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(77)p Black 1764
4406 a Fo(unlink)p Fr(,)p 0 0 1 TeXcolorrgb 25 w(138)p
Black 1764 4506 a Fo(unload-dynamic-ex)o(te)o(rna)o(ls)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(110)p Black 1764 4606 a
Fo(us-ascii-codec)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p
Black 1764 4706 a Fo(use-case)p Fr(,)p 0 0 1 TeXcolorrgb
25 w(78)p Black 1764 4806 a Fo(user-id->integer)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(135)p Black 1764 4906 a Fo(user-id->user-inf)o
(o)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black 1764 5006
a Fo(user-id=?)p Fr(,)p 0 0 1 TeXcolorrgb 24 w(135)p
Black Black 1660 5255 a(161)p Black eop end
%%Page: 162 170
TeXDict begin 162 169 bop 0 TeXcolorgray Black Black
Black 739 523 a Fo(user-id?)p Fr(,)p 0 0 1 TeXcolorrgb
24 w(135)p Black 739 623 a Fo(user-info-group)p Fr(,)p
0 0 1 TeXcolorrgb 21 w(135)p Black 739 722 a Fo(user-info-home-d)o(ir)o
(ect)o(or)o(y)p Fr(,)p 0 0 1 TeXcolorrgb 22 w(135)p Black
739 822 a Fo(user-info-id)p Fr(,)p 0 0 1 TeXcolorrgb
23 w(135)p Black 739 922 a Fo(user-info-name)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(135)p Black 739 1021 a Fo(user-info-shell)p
Fr(,)p 0 0 1 TeXcolorrgb 21 w(135)p Black 739 1121 a
Fo(user-info?)p Fr(,)p 0 0 1 TeXcolorrgb 23 w(135)p Black
739 1220 a Fo(utf-16be-codec)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(87)p Black 739 1320 a Fo(utf-16le-codec)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(87)p Black 739 1420 a Fo(utf-32be-codec)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p Black 739 1519 a Fo(utf-32le-codec)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(87)p Black 739 1619 a Fo(utf-8-codec)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(87)p Black 739 1802 a Fo
(vector-binary-se)o(ar)o(ch)p Fr(,)p 0 0 1 TeXcolorrgb
21 w(74)p Black 739 1901 a Fo(vector-binary-se)o(ar)o(ch3)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(74)p Black 739 2001 a Fo
(vector-delete-ne)o(ig)o(hbo)o(r-)o(dup)o(s)p Fr(,)p
0 0 1 TeXcolorrgb 14 w(69)p Black(,)p 0 0 1 TeXcolorrgb
19 w(73)p Black 739 2100 a Fo(vector-heap-sort)o Fr(,)p
0 0 1 TeXcolorrgb 22 w(72)p Black 739 2200 a Fo(vector-heap-sort)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(72)p Black 739 2300 a Fo
(vector-insert-so)o(rt)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(73)p Black 739 2399 a Fo(vector-insert-so)o(rt)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(73)p Black 739 2499 a Fo(vector-merge)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(69)p Black(,)p 0 0 1 TeXcolorrgb
26 w(71)p Black 739 2599 a Fo(vector-merge!)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(69)p Black(,)p 0 0 1 TeXcolorrgb
27 w(72)p Black 739 2698 a Fo(vector-merge-sor)o(t)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(71)p Black 739 2798 a Fo
(vector-merge-sor)o(t!)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(71)p Black 739 2897 a Fo(vector-quick-sor)o(t)p Fr(,)p
0 0 1 TeXcolorrgb 22 w(72)p Black 739 2997 a Fo(vector-quick-sor)o(t!)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(72)p Black 739 3097 a Fo
(vector-quick-sor)o(t3)o Fr(,)p 0 0 1 TeXcolorrgb 22
w(73)p Black 739 3196 a Fo(vector-quick-sor)o(t3)o(!)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(73)p Black 739 3296 a Fo(vector-sort)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(69)p Black 739 3396 a Fo(vector-sort!)p
Fr(,)p 0 0 1 TeXcolorrgb 23 w(69)p Black 739 3495 a Fo(vector-sorted?)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(69)p Black(,)p 0 0 1 TeXcolorrgb
27 w(71)p Black 739 3595 a Fo(vector-stable-so)o(rt)o
Fr(,)p 0 0 1 TeXcolorrgb 22 w(69)p Black 739 3694 a Fo
(vector-stable-so)o(rt)o(!)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(69)p Black 739 3877 a Fo(wait-for-child-p)o(ro)o(ces)o(s)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(130)p Black 739 3977 a
Fo(wait-for-externa)o(l-)o(eve)o(nt)o Fr(,)p 0 0 1 TeXcolorrgb
22 w(123)p Black 739 4076 a Fo(with-nack)p Fr(,)p 0 0 1
TeXcolorrgb 24 w(99)p Black 739 4176 a Fo(with-syslog-dest)o(in)o(ati)o
(on)o Fr(,)p 0 0 1 TeXcolorrgb 22 w(148)p Black(,)p 0 0 1
TeXcolorrgb 26 w(149)p Black 739 4276 a Fo(working-director)o(y)p
Fr(,)p 0 0 1 TeXcolorrgb 22 w(136)p Black 739 4375 a
Fo(wrap)p Fr(,)p 0 0 1 TeXcolorrgb 26 w(99)p Black 739
4558 a Fo(x->os-byte-vecto)o(r)p Fr(,)p 0 0 1 TeXcolorrgb
22 w(54)p Black 739 4658 a Fo(x->os-string)p Fr(,)p 0 0 1
TeXcolorrgb 23 w(53)p Black Black Black Black 2109 5255
a(162)p Black eop end
%%Trailer

userdict /end-hook known{end-hook}if
%%EOF
